我编写了数据库模式(到目前为止只有一个表),并在一个文件中编写了该表的INSERT语句.然后我创建了数据库,如下所示:
$ sqlite3 newdatabase.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read ./schema.sql
SQL error near line 16: near "s": syntax error
Run Code Online (Sandbox Code Playgroud)
我的文件的第16行看起来像这样:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
Run Code Online (Sandbox Code Playgroud)
问题是单引号的转义字符.我也试过双重转义单引号(使用\\\'而不是\'),但这也不起作用.我究竟做错了什么?
我有以下DB帮助程序类:
public int studentExists(String studid) {
Cursor dataCount = mDb.rawQuery("select count(*) from usertable where " + KEY_STUDID + "=" + studid, null);
dataCount.moveToFirst();
int count = dataCount.getInt(0);
dataCount.close();
return count;
}
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中使用此功能来查看之前是否已输入学生ID.
当学生ID是整数时(346742),这样可以正常工作,但每当我尝试添加字母数字ID(PB3874)时,它会强制关闭应用程序.
错误:
06-13 18:22:20.554:ERROR/AndroidRuntime(8088):android.database.sqlite.SQLiteException:没有这样的列:pb3874 :,编译时:从usertable中选择count(*)其中studid = pb3874
我不认为它是一个数据类型问题(因为我使用文本类型):
private static final String DATABASE_CREATE =
"create table usertable (_id integer primary key autoincrement, "
+ "studid text not null);";
Run Code Online (Sandbox Code Playgroud)
但我很困惑为什么错误说,no such column: pb3874因为我试图从studid列中简单地选择该值.以及为什么这适用于任何int值.任何人有任何解决建议的问题?
我将Ionic2与SQLite结合使用,我有以下几点:
应用程序
private createDatabase(): void {
let db: SQLite = new SQLite();
db.openDatabase({
name: "data.db",
location: "default"
}).then(() => {
db.executeSql("CREATE TABLE IF NOT EXISTS chats (_id TEXT PRIMARY KEY, memberIds TEXT, title TEXT, subTitle TEXT, picture TEXT, lastMessageId TEXT, lastMessageCreatedAt DATE)", {}).then((chatData) => {
console.log("chats TABLE CREATED: ", chatData);
db.executeSql("CREATE TABLE IF NOT EXISTS messages (_id TEXT PRIMARY KEY, chatId TEXT, senderId TEXT, ownership TEXT, content TEXT, createdAt DATE, changeDate BOOLEAN, readByReceiver BOOLEAN)", {}).then((messageData) => {
console.log("messages …Run Code Online (Sandbox Code Playgroud)