如何使用String.format()
这样在SQLite中插入null?
String sql = "INSERT INTO tblCustomers (idCustomer , customerName )" +
" VALUES (%d , '%s')";
db.execSQL(String.format(Locale.US,
sql,
1, "Ali"));
db.execSQL(String.format(Locale.US,
sql,
1, null));// this time it inserts 'null' value as string in database, not (NULL)
答案 0 :(得分:2)
null
, String.format()
正在转换为“null”。因此,您只需要为新行和左idCustomer
字段插入customerName
字段。
为此,您只需要插入id字段。
String id_sql = "INSERT INTO tblCustomers (idCustomer)" +
" VALUES (%d)";
db.execSQL(String.format(Locale.US,
id_sql,
1));
您需要使用ContentValues
,而不是使用当前的方式。它也会根据需要处理您的null值。所以你的查询将是
ContentValues values = new ContentValues();
values.put(COLUMN_ID, valueOfID);
values.put(COLUMN_NAME, valueOfName);
values.put(COLUMN_OTHER, valueOfOther);
// Insert query will be
long insertId = database.insert(TABLE_NAME, null,
values);
答案 1 :(得分:0)
最后,我使用了一种像魅力一样的简单方法!
String sql = "INSERT INTO tblCustomers (idCustomer , customerName )" +
" VALUES (%d , %s)";
db.execSQL(Locale.US,
sql ,
item.getID(), item.getNameForQuery());
我的CustomerObject.java:
public String getCustomerNameForQuery() {
return customerName == null ? null : "'"+name+"'";
}
如您所见,我将查询字符串中的单引号移动到我的对象。