将 SQLite INSERT 代码与 android 中的字符串一起使用
Use SQLite INSERT code with a string in android
我尝试将所有列表视图项的名称插入 sqlite 数据库,但我不知道该怎么做。我想这个循环可以帮助我,但在第 6 行遇到错误:
final SQLiteDatabase db = openOrCreateDatabase("LMDB", MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS MyTable (id INT primary key autoincrement, onvan VARCHAR , ahamiyat INT, foriyat INT, olaviyat INT);");
String temp ="";
for(int i=0;i<myList.getAdapter().getCount();i++)
{
temp = MyListAdapter.getItemTitle(i);
db.execSQL("INSERT INTO MyTable VALUES ('"+temp+"')");
}
db.close();
第二题:
当我从数据库中删除一行时 "id INT primary key autoincrement" 重新排列 ID? (例如 -1 其余 ID)
谢谢
更新
我想向我的 table.I 中插入一个字符串参数,之前使用此代码添加一个静态字符串作为字段名称:
db.execSQL("INSERT INTO MyTable VALUES ('Smith' , 'Max' , 22)");
当我使用上面的代码时 logcat 的错误是这样的:
02-04 10:15:01.181: E/AndroidRuntime(4161): at ir.clickteam.lifemanagement.AddActivity.onClick(AddActivity.java:109)
- 关于 SQLite 数据库,请阅读相关教程,使用 ContentValues 插入新记录。
- 第二,我不明白你在说什么。你怎么不说清楚点呢
在你的插入查询中使用这样的
db.execSQL("INSERT INTO MyTable (your_column_name) VALUES ('"+temp+"')");
你为什么不使用内容值,它更好
db.beginTransaction();
try {
ContentValues cv = new ContentValues();
cv.put("columnName", value);
cv.put("columnName", value);
cv.put("columnName", value);
cv.put("columnName", value);
long id = db.insertOrThrow("table_name", null, cv);
db.setTransactionSuccessful();
db.endTransaction();
return id;
} catch (SQLiteConstraintException e) {
return -1;
}
如果您遇到任何问题,请告诉我...
由于您的 table 的列多于 VALUES
的值,您需要明确指定要插入的列:
db.execSQL("INSERT INTO MyTable(onvan) VALUES ('"+temp+"')");
其中 onvan
是您要插入的列名称 temp
。
为避免字符串中的撇号 '
等问题,请考虑使用参数绑定:
db.execSQL("INSERT INTO MyTable(onvan) VALUES (?)", new Object[] { temp });
标识符不会改变,除非您自己明确更新它们。
我尝试将所有列表视图项的名称插入 sqlite 数据库,但我不知道该怎么做。我想这个循环可以帮助我,但在第 6 行遇到错误:
final SQLiteDatabase db = openOrCreateDatabase("LMDB", MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS MyTable (id INT primary key autoincrement, onvan VARCHAR , ahamiyat INT, foriyat INT, olaviyat INT);");
String temp ="";
for(int i=0;i<myList.getAdapter().getCount();i++)
{
temp = MyListAdapter.getItemTitle(i);
db.execSQL("INSERT INTO MyTable VALUES ('"+temp+"')");
}
db.close();
第二题:
当我从数据库中删除一行时 "id INT primary key autoincrement" 重新排列 ID? (例如 -1 其余 ID)
谢谢
更新
我想向我的 table.I 中插入一个字符串参数,之前使用此代码添加一个静态字符串作为字段名称:
db.execSQL("INSERT INTO MyTable VALUES ('Smith' , 'Max' , 22)");
当我使用上面的代码时 logcat 的错误是这样的:
02-04 10:15:01.181: E/AndroidRuntime(4161): at ir.clickteam.lifemanagement.AddActivity.onClick(AddActivity.java:109)
- 关于 SQLite 数据库,请阅读相关教程,使用 ContentValues 插入新记录。
- 第二,我不明白你在说什么。你怎么不说清楚点呢
在你的插入查询中使用这样的
db.execSQL("INSERT INTO MyTable (your_column_name) VALUES ('"+temp+"')");
你为什么不使用内容值,它更好
db.beginTransaction();
try {
ContentValues cv = new ContentValues();
cv.put("columnName", value);
cv.put("columnName", value);
cv.put("columnName", value);
cv.put("columnName", value);
long id = db.insertOrThrow("table_name", null, cv);
db.setTransactionSuccessful();
db.endTransaction();
return id;
} catch (SQLiteConstraintException e) {
return -1;
}
如果您遇到任何问题,请告诉我...
由于您的 table 的列多于
VALUES
的值,您需要明确指定要插入的列:db.execSQL("INSERT INTO MyTable(onvan) VALUES ('"+temp+"')");
其中
onvan
是您要插入的列名称temp
。为避免字符串中的撇号
'
等问题,请考虑使用参数绑定:db.execSQL("INSERT INTO MyTable(onvan) VALUES (?)", new Object[] { temp });
标识符不会改变,除非您自己明确更新它们。