2016-03-19 3 views
1

Ich erhalte diesen Fehler, wenn ich versuche, Daten einzufügen kann mir jemand sagen, was das Problem ist? Tabelle Entry_table hat keine Spalte mit dem Namen DATE (Code 1):, beim Kompilieren: INSERT INTO Entry_table (AMOUNT, NAME, CARET, DATUM, BALANCE, AMOUNT_PAID) VALUES (?,?, ?,?,?,)Tabelle Entry_table hat keine Spalte namens DATE (Code 1) INSERT INTO Entry_table (AMOUNT, NAME, CARET, DATUM, BALANCE, AMOUNT_PAID) WERTE (?,?,?,?,?,?

Hier ist mein Code:

 package com.example.bipinp.mithun; 

     import android.os.Bundle; 
     import android.support.design.widget.FloatingActionButton; 
     import android.support.design.widget.Snackbar; 
     import android.support.v7.app.AppCompatActivity; 
     import android.support.v7.widget.Toolbar; 
     import android.text.Editable; 
     import android.text.TextWatcher; 
     import android.util.Log; 
     import android.view.View; 
     import android.widget.AdapterView; 
     import android.widget.ArrayAdapter; 
     import android.widget.Button; 
     import android.widget.EditText; 
     import android.widget.Spinner; 
     import android.widget.TextView; 
     import android.widget.Toast; 

     import java.util.ArrayList; 
     import java.util.Calendar; 
     import java.util.List; 

     public class DailyEntry extends AbstractActivity implements TextWatcher { 
      private Button btnsbmtentry; 
      private Spinner spiner2; 
      private EditText milkcaret,amount,amountp,prevbal,currentBal,totalBal; 
      private TextView mtxtDate; 
      DatabaseHelper mydb; 
      int amnt,amntp,sub,currB,prevB,totalB; 
      String sAmnt,sAmntp,subvalue,sCurrBal,sPrevBal,stotalBal,strDate; 
      Calendar cal = Calendar.getInstance(); 
      int dd = cal.get(Calendar.DAY_OF_MONTH); 
      int mm = cal.get(Calendar.MONTH); 
      int yy = cal.get(Calendar.YEAR); 


      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_daily_entry); 
       mydb = new DatabaseHelper(this); 

       mtxtDate = (TextView)findViewById(R.id.txtDate); 
       btnsbmtentry=(Button)findViewById(R.id.btnsubmitentry); 
       spiner2=(Spinner)findViewById(R.id.spinner2); 
       milkcaret=(EditText)findViewById(R.id.txt1_de); 
       amount=(EditText)findViewById(R.id.txt2_de); 
       amountp=(EditText)findViewById(R.id.txt3_de); 
       prevbal = (EditText)findViewById(R.id.txt4_de); 

       totalBal = (EditText)findViewById(R.id.txt4_deTotBal); 
       amount.addTextChangedListener(this); 
       amountp.addTextChangedListener(this); 
       prevbal.addTextChangedListener(this); 
       mtxtDate.setText(dd+"/"+mm+"/"+yy); 



       adddata2(); 
       loadspinner(); 
       spiner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
         String pos = parent.getItemAtPosition(position).toString(); 
         String bale = mydb.balance(pos); 
         prevbal.setText(bale); 

        } 

        @Override 
        public void onNothingSelected(AdapterView<?> parent) { 

        } 
       }); 

      } 

      private void loadspinner() { 
       DatabaseHelper db = new DatabaseHelper(this); 
       List<String> labels = db.getAllLabels(); 
       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,labels); 
       dataAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item); 
       spiner2.setAdapter(dataAdapter); 
      } 

      private void adddata2() { 
       btnsbmtentry.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         boolean insertdata2 = mydb.insertdata2(spiner2.getSelectedItem().toString(),milkcaret.getText().toString(),amount.getText().toString(),amountp.getText().toString(),totalBal.getText().toString(),mtxtDate.getText().toString()); 
         if (insertdata2) 
          Toast.makeText(DailyEntry.this, "Record Inserted", Toast.LENGTH_SHORT).show(); 
         else 
          Toast.makeText(DailyEntry.this, "Databse Error", Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } 


      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       currentBal = (EditText)findViewById(R.id.txt4_deCurrB); 


       sAmnt = amount.getText().toString(); 
       sAmntp = amountp.getText().toString(); 

       sPrevBal = prevbal.getText().toString(); 
       try { 
        amnt = Integer.parseInt(sAmnt); 
        amntp = Integer.parseInt(sAmntp); 
        sub = amnt-amntp; 

        prevB = Integer.parseInt(sPrevBal); 

       }catch (NumberFormatException e){ 

       } 

       subvalue = String.valueOf(sub); 
       currentBal.setText(subvalue); 
       Log.d("prevb", "afterTextChanged: "+prevB); 
       Log.d("currb","afterText:"+currB); 
       stotalBal = String.valueOf(sub + prevB); 

       totalBal.setText(stotalBal); 

      } 
     } 

DatabaseHelper.class

package com.example.bipinp.mithun; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Bipinp on 2/18/2016. 
*/ 
public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "Sales.db"; 
    public static final String TABLE_NAME1 = "Insert_table"; 
    public static final String TABLE_NAME2 = "Entry_table"; 

    public static final String COL_ID = "ID"; 
    public static final String COL_NAME = "NAME"; 

    public static final String COL_CUST_NAME = "NAME"; 
    public static final String COL_CARET = "CARET"; 
    public static final String COL_AMOUNT = "AMOUNT"; 
    public static final String COL_AMOUNT_PAID = "AMOUNT_PAID"; 
    public static final String COL_BALANCE = "BALANCE"; 
    public static final String COL_DATE = "DATE"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_NAME1 + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT)"); 
     db.execSQL("create table " + TABLE_NAME2 + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,CARET INTEGER,AMOUNT INTEGER,AMOUNT_PAID INTEGER,BALANCE INTEGER,COL_DATE TEXT,FOREIGN KEY(ID) REFERENCES Insert_table(ID_NAME))"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME1); 
     db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME2); 
     onCreate(db); 

    } 

    public boolean deleteRow(String name) 
    { SQLiteDatabase db = this.getWritableDatabase(); 
     return db.delete(TABLE_NAME1, COL_NAME + "= '" + name + "';", null) > 0; 
    } 

    public boolean insertdata(String name){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_NAME,name); 
     long result = db.insert(TABLE_NAME1,null,contentValues); 
     if(result == -1) 
      return false; 
     else 
      return true; 
    } 

    public boolean insertdata2(String name,String caret,String amount,String amount_paid,String balance,String date){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_CUST_NAME,name); 
     contentValues.put(COL_CARET,caret); 
     contentValues.put(COL_AMOUNT,amount); 
     contentValues.put(COL_AMOUNT_PAID,amount_paid); 
     contentValues.put(COL_BALANCE,balance); 
     contentValues.put(COL_DATE,date); 
     long result = db.insert(TABLE_NAME2,null,contentValues); 
     if (result == -1) 
      return false; 
     else 
      return true; 
    } 

    public List<String> getAllLabels(){ 
     List<String> labels = new ArrayList<String>(); 

     String selectQuery = " SELECT " + COL_NAME + " FROM " + TABLE_NAME1; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery,null); 

     if (cursor.moveToFirst()){ 
      do { labels.add(cursor.getString(0)); 
      }while (cursor.moveToNext()); 
     } 
     cursor.close(); 
     db.close(); 

     return labels; 
    } 
    public String balance(String name) 
    { 
     String label = null; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     String selectQuery = " SELECT " + COL_BALANCE + " FROM " + TABLE_NAME2 + " WHERE " + " rowid " + "= '"+(" SELECT " + " last_insert_rowid() " + " * FROM " + TABLE_NAME2 + " WHERE " + " name " + " = " +name)+ "';"; 
     Cursor cursor = db.rawQuery(selectQuery,null); 

     if(cursor != null) 
     { 
      if(cursor.moveToFirst()){ 
       label = cursor.getString(0); 
      } 
      cursor.close(); 
     } 

     return label; 
    } 
} 
+1

Hat die Tabelle tatsächlich eine solche Spalte? Bitte teilen Sie Ihre DDL-Anweisung. – Mureinik

+0

@Mureinik Ich habe meine DatabaseHelper-Klasse freigegeben – bipin

Antwort

3

Ihre Anweisung create table sagt:

db.execSQL("create table " + TABLE_NAME2 + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,CARET INTEGER,AMOUNT INTEGER,AMOUNT_PAID INTEGER,BALANCE INTEGER, "+ 
       "COL_DATE TEXT,FOREIGN KEY(ID) REFERENCES Insert_table(ID_NAME))"); 
       ^^^^^^^^ 

daher Ihre Spalte COL_DATE benannt ist, nicht DATE. COL_DATE ist ein besserer Spaltenname als DATE btw, da DATE ein reserviertes Wort für den SQL-Typ "Date" ist.

Verwandte Themen