如何在String
数据库中存储SQLite
?
String et11 = et1.getText().toString();
String et22 = et2.getText().toString();
db.execSQL("INSERT INTO ZAKHIRE (USER , PAS) VALUES ( " + et11 + et22 +")");
db.close();
DbHelper dbHelper = new DbHelper(getApplicationContext());
String name = mName.getText().toString().trim();
String pass = mPasswd.getText().toString().trim();
dbHelper.insertRecord(name, pass);
这是在DBhelper类中扩展SQLiteOpenHelper的覆盖方法。
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABLE_NAME + "("
+ Name + " TEXT,"
+ Password + " TEXT)";
db.execSQL(sql);
}
void insertRecord(String name, String password) {
dataBase = getWritableDatabase();
values = new ContentValues();
values.put(Name, name);
values.put(Password, password);
Log.e("Values are ", String.valueOf(values));
dataBase.insert(TABLE_NAME, null, values);
dataBase.close();
}
INSERT INTO ZAKHIRE (USER , PAS) VALUES
是说插入一个新行,其中列USER和PAS是括在括号内的2个值,它们用逗号分隔。
假设et11具有值FRED并且et22具有值PASSWORD,则VALUES ( " + et11 + et22 +")"
等于VALUES (FREDPASSWORD)
,即仅一个值。
但是,要插入字符串,必须用单引号括起字符串(数字不必括在单引号中)。
通过将字符串括在单引号(')中形成字符串常量。字符串中的单引号可以通过在行中放入两个单引号来编码 - 如Pascal中所示。不支持使用反斜杠字符的C样式转义,因为它们不是标准SQL。
使用上面的例子,你需要它是VALUES ('FRED','PASSWORD')
所以要解决这个问题,你需要a)用逗号分隔两个值,b)用引号括起两个字符串。
所以你可以使用: -
db.execSQL("INSERT INTO ZAKHIRE (USER , PAS) VALUES( '" + et11 + "','" + et22 + ")");
insert
方法)是更好的方法;它基本上为你构建SQL,引用字符串和添加逗号等。