gpt4 book ai didi

android - 将值插入数据库时​​出错

转载 作者:行者123 更新时间:2023-11-29 16:04:02 25 4
gpt4 key购买 nike

我正在创建一个简单的数据库来添加产品的值(value)。在数据库中添加条目时,我在 Logcat 中收到一个错误,然后程序就停在那里。

我不清楚这个错误,但它与插入数据或我编写的查询有关。我尝试了所有可能的替代方案。

程序代码是:

数据库.java

public class DataBase extends SQLiteOpenHelper
{

public DataBase(Context context) {
super(context, CreateTable.DB_NAME, null, CreateTable.DB_VERSION);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub

String create = "Create Table " + CreateTable.TABLE_NAME + "( " + CreateTable.KEY_ID
+ " INTEGER PRIMARY KEY," + CreateTable.KEY_NAME + " TEXT,"
+ CreateTable.KEY_PRICE + " REAL)";

db.execSQL(create);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub


}

public void addProduct(Product p)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues c = new ContentValues();
c.put(CreateTable.KEY_NAME, p.getName());
c.put(CreateTable.KEY_PRICE, p.getPrice());

db.insert(CreateTable.TABLE_NAME, null, c);
db.close();
}

}

EnterDeatils.java

public class EnterDeatils extends Activity {

EditText name;
EditText price;
Button done;
int id = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.enter_deatils);

name = (EditText) findViewById(R.id.edtname);
price = (EditText) findViewById(R.id.edtprice);
done = (Button) findViewById(R.id.btndone);

done.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Product p = new Product();
p.setId(id);
p.setName(name.getText().toString());
p.setPrice(Float.valueOf(price.getText().toString()));

DataBase d = new DataBase(EnterDeatils.this);
d.addProduct(p);
}
});
}

}

LogCat 错误:

01-12 23:06:52.343: E/Database(382): Error inserting pPrice=12.0 pName=ds
01-12 23:06:52.343: E/Database(382): android.database.sqlite.SQLiteException: table Books has no column named pPrice: , while compiling: INSERT INTO Books(pPrice, pName) VALUES(?, ?);

请求你们帮我找出错误。提前致谢。

最佳答案

SQLiteOpenHelper onCreate() 仅在数据库文件不存在时调用。如果您在 onCreate() 中修改 SQL,则必须确保数据库文件已更新。

两种方法:

  • 删除旧版本的数据库。卸载是执行此操作的一种方法。这样,数据库就可以使用您当前在 onCreate() 中的任何代码创建。这通常是应用开发过程中最简单的方法。

  • 提高传递给 SQLiteOpenHelper 父类(super class)的数据库版本号。如果此数字与数据库文件中存储的版本号不同,将调用 onUpgrade()onDowngrade(),您可以更新数据库架构。当您已经发布版本以便您的用户可以在更新您的应用程序时保留他们的数据时,这是首选方式。

关于android - 将值插入数据库时​​出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21078184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com