0

helo 我创建了一个名为 produittable 的表,我需要从 editText 保存一些数据,然后在列表中搜索它,但是 logCat 说没有名为 description_produit 的列,对我来说它就在那里,你能告诉我我错在哪里以及如何要解决这个问题。

这是我的 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();
    }   
}
4

1 回答 1

1

您的创建 SQL 以 CREATE TABLE IF NOT EXISTS 开头。所以我的猜测是您在设备已经拥有该表的情况下添加了quantite_stock列。如果是这种情况,那么只需重新安装应用程序 - 它将删除数据库,因此您可以确保使用更新的表列创建表。

于 2013-05-15T12:01:33.417 回答