gpt4 book ai didi

java - Android - 将行插入 SQLite DB

转载 作者:行者123 更新时间:2023-11-29 13:27:41 25 4
gpt4 key购买 nike

我在将行插入数据库表时遇到问题。我有以下代码:

try {
myDB = jDB.getInstance(getApplicationContext()).db;

myDB.beginTransaction();
String sSQL = "INSERT INTO kosik (mnozstvi, cena, idVyrobek) VALUES ('" +
sMn + "', '" + sCena + "', '" + String.valueOf(iIDVyrobku) + "');";
myDB.execSQL(sSQL, null);
myDB.endTransaction();
} catch (SQLiteException e) {
e.printStackTrace();
}

jDB 类如下:

public class jDB {
private static jDB dbInstance = null;
public static String DB_PATH;
public static SQLiteDatabase db = null;
private static final String DATABASE_NAME = "db.sqlite";
.
.
.
public static jDB getInstance(Context context)
{
if (dbInstance == null)
{
DB_PATH = "/data/data/" + context.getPackageName();
// if not exists database, copy new from assets
if (!isDataBaseExist())
{
try {
copyDataBase(context);
} catch (IOException ex)
{
Toast.makeText(context,
"" + ex.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
}
DB_PATH = DB_PATH + "/" + DATABASE_NAME;
db = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READWRITE);
// create singleton object
dbInstance = new jDB(context);
}
return dbInstance;
}

插入后,一切似乎都正常,但没有行插入到表中...

我做错了什么?

谢谢,彼得

解决方案:

最后,有一个可行的解决方案:

try {
myDB = jDB.getInstance(getApplicationContext()).db;

myDB.beginTransaction();
ContentValues insertValues = new ContentValues();
insertValues.put("idVyrobek", String.valueOf(iIDVyrobku));
insertValues.put("mnozstvi", sMn);
insertValues.put("cena", sCena);
insertValues.put("poznamka", "");
myDB.insertOrThrow("kosik", null, insertValues);
myDB.setTransactionSuccessful();
} catch (SQLiteException e) {
e.printStackTrace();
} finally {
myDB.endTransaction();
}

非常感谢俾斯麦的帮助!

最佳答案

尝试在调用endTransaction()之前添加setTransactionSuccessful()。另外,我通常将 endTransaction 放在 finally 语句中以避免 SQLite 出现问题:

myDB = jDB.getInstance(getApplicationContext()).db;
myDB.beginTransaction();
try {
String sSQL = "INSERT INTO kosik (mnozstvi, cena, idVyrobek) VALUES ('" +
sMn + "', '" + sCena + "', '" + String.valueOf(iIDVyrobku) + "');";
myDB.execSQL(sSQL, null);
myDB.setTransactionSuccessful();
} catch (SQLiteException e) {
e.printStackTrace();
} finally {
myDB.endTransaction();
}

关于java - Android - 将行插入 SQLite DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911731/

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