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();
}
}
答案 0 :(得分:1)
您的create SQL以CREATE TABLE IF NOT EXISTS开头。所以我的猜测是你添加了 quantite_stock 列,而设备已经拥有该表。如果是这种情况,那么只需重新安装应用程序 - 它将删除数据库,因此您可以确保使用更新的表列创建表。