2013-05-15 124 views
0

helo我已經創建了一個名爲produittable的表,我需要保存editText 一些數據,並在列表中搜索後,但logCat說沒有列名爲description_produit ,對我而言,它是你能告訴我我錯在哪裏以及如何解決它。沒有這樣的列在表SQLite android

的是我的logcat ....

android.database.sqlite.SQLiteException: table produittable has no column named quantite_stock (code 1): , while compiling: insert into produittable(nom_produit,quantite_stock,prix_vente,description_produit) values('nokia','15','90','where plz') 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at com.tabet.salah_projet.ProduitActivity.insert(ProduitActivity.java:165) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at com.tabet.salah_projet.ProduitActivity$3.onClick(ProduitActivity.java:56) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.view.View.performClick(View.java:4202) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.view.View$PerformClick.run(View.java:17340) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.os.Handler.handleCallback(Handler.java:725) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.os.Looper.loop(Looper.java:137) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-15 11:34:08.902: E/AndroidRuntime(1003):  at dalvik.system.NativeStart.main(Native Method) 

和數據庫代碼..

public class ProduitActivity extends Activity{ 
    SQLiteDatabase db; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.produits); 
     createDB(); 
     TextView listeprod =(TextView)findViewById(R.id.link_to_liste); 
     listeprod.setOnClickListener(new OnClickListener() { 

      public void onClick(View arg0) { 

       Intent i = new Intent(getApplicationContext(), ChecklisteProduit.class); 
       startActivity(i); 
      } 
      }); 


     Button btnAller=(Button)findViewById(R.id.btnAller); 
     btnAller.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      Intent i = new Intent(getApplicationContext(), Stock.class); 
      startActivity(i); 
     } 
     }); 
     //do insert 
     Button btnAjout=(Button)findViewById(R.id.btnAjout); 
     btnAjout.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

     insert(); 
     } 
     }); 
     Button btnClear=(Button)findViewById(R.id.btnClear); 
     btnClear.setOnClickListener(new OnClickListener() { 
     public void onClick(View arg0) { 
     clear(); 
     } 
     }); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    CreateMenu(menu); 
    return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
    return MenuChoice(item); 
    } 

    private void CreateMenu(Menu menu) 
    { 
    MenuItem mnu1 = menu.add(0, 0, 0, "Insert"); 
    { 
    mnu1.setAlphabeticShortcut('i'); 
    mnu1.setIcon(android.R.drawable.ic_input_add); 
    } 
    MenuItem mnu2 = menu.add(0, 1, 1, "Search"); 
    { 
    mnu2.setAlphabeticShortcut('s'); 
    mnu2.setIcon(android.R.drawable.ic_search_category_default); 

    } 
    MenuItem mnu3 = menu.add(0, 2, 2, "Delete"); 
    { 
    mnu3.setAlphabeticShortcut('d'); 
    mnu3.setIcon(android.R.drawable.ic_delete); 

    } 
    MenuItem mnu4 = menu.add(0, 3, 3, "View"); 
    { 
    mnu4.setAlphabeticShortcut('d'); 
    mnu4.setIcon(android.R.drawable.ic_menu_info_details); 
    } 
    } 
    private boolean MenuChoice(MenuItem item) 
    { 
    Intent intent=new Intent(); 
    switch (item.getItemId()) { 
    case 0: 
    insert(); 
    return true; 
    case 1: 
    intent.setClass(ProduitActivity.this, Stock.class); 
    startActivity(intent); 
    return true; 
    case 2: 
    intent.setClass(ProduitActivity.this, Stock.class); 
    startActivity(intent); 
    return true; 

    case 3: 
    intent.setClass(ProduitActivity.this, Stock.class); 
    startActivity(intent); 
    return true; 

    } 
    return false; 
    } 

    public void createDB() 
    { 
    db=openOrCreateDatabase("produitbase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
    db.setLocale(Locale.getDefault()); 
    db.setLockingEnabled(true); 
    db.setVersion(1); 
    String sql="create table if not exists Produittable(id INTEGER PRIMARY KEY AUTOINCREMENT, nom_produit TEXT, quantite_stock TEXT, prix_vente TEXT, description_produit TEXT)"; 
    db.execSQL(sql); 
    } 

    public void insert() 
    { 
    EditText nom_produit=(EditText)findViewById(R.id.Nom_produit); 
    EditText quantite_stock=(EditText)findViewById(R.id.quantite_stock); 
    EditText prix_vente=(EditText)findViewById(R.id.prix_vente); 
    EditText description_produit=(EditText)findViewById(R.id.description_produit); 

    if(nom_produit.getText().toString().equals("")) 
    { 
    Toast.makeText(ProduitActivity.this, "Entrer nom produit.", Toast.LENGTH_SHORT).show(); 
    } 
    else if (quantite_stock.getText().toString().equals("")) 
    { 
    Toast.makeText(ProduitActivity.this, "Entrer la quantité.", Toast.LENGTH_SHORT).show(); 
    } 
    else if (prix_vente.getText().toString().equals("")) 
    { 
    Toast.makeText(ProduitActivity.this, "Entrer prix de vente.", Toast.LENGTH_SHORT).show(); 
    } 
    else if (description_produit.getText().toString().equals("")) 
    { 
    Toast.makeText(ProduitActivity.this, "Entrer la description.", Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 

    String sql="insert into produittable(nom_produit,quantite_stock,prix_vente,description_produit) values('"+ nom_produit.getText().toString() +"','"+ quantite_stock.getText().toString() +"','"+ prix_vente.getText().toString() +"','"+ description_produit.getText().toString()+"')"; 
    db.execSQL(sql); 
    clear(); 
    Toast.makeText(ProduitActivity.this, "Produit Ajouté.", Toast.LENGTH_SHORT).show(); 
    } 
    } 
    public void clear() 
    { 
    EditText nom_produit=(EditText)findViewById(R.id.Nom_produit); 
    EditText quantite_stock=(EditText)findViewById(R.id.quantite_stock); 
    EditText prix_vente=(EditText)findViewById(R.id.prix_vente); 
    EditText description_produit=(EditText)findViewById(R.id.description_produit); 

    nom_produit.setText(""); 
    quantite_stock.setText(""); 
    prix_vente.setText(""); 
    description_produit.setText(""); 

    nom_produit.clearFocus(); 
    quantite_stock.clearFocus(); 
    prix_vente.clearFocus(); 
    description_produit.clearFocus(); 

    nom_produit.requestFocus(); 
    } 
@Override 
    public void onDestroy() 
    { 
    super.onDestroy(); 
    db.close(); 
    } 
} 
+0

創建表格時檢查正確的列名稱。插入時應該匹配相同。 –

+0

如果你編輯你的數據庫,你必須從設備或模擬器卸載你的應用程序,然後嘗試運行 –

+0

發佈你創建該表的代碼部分 – CRUSADER

回答

1

你創建SQL與IF NOT EXISTS CREATE TABLE開始。所以我猜你是在設備已經擁有該表的時候添加了列quantite_stock。如果是這種情況,那麼只需重新安裝應用程序 - 它會刪除數據庫,因此您可以確保表格將使用更新的表格列創建。

+0

認爲它的作品有很多我已經恢復它,並且我在表格中發現了一個小問題,在這裏我forgott'<--- –

+0

當我把部分hwo作品與我的應用程序的其他部分放在一起我得到同樣的問題你能給我另一個可能的解決方案請我在這個專欄的股票quantite_stock沒有sutch列爲什麼logCat說。 –

+0

嗯..問題解決了問題的哪個部分??在應用程序的其他部分..你是否得到相同的錯誤,然後首先通過DDMS刪除sqlite表,並檢查是否存在正確的表結構..然後重新檢查插入查詢,使列名稱相同... – CRUSADER

0

當我把部分hwo與我的應用程序的其他部分放在一起時,我遇到了同樣的問題,你可以給我另一個可能的解決方案請我在這個專欄的庫存quantite_stock沒有sutch列爲什麼logCat說。