我的疑问是
String CREATE = "CREATE TABLE" +DATABASE_Bussiness+ "(" + KEY_ID +
"INTEGER primary key AUTOINCREMENT, " + A_DATE + "TEXT,
" + A_NAME+ "TEXT, " +A_AMOUNT+ "INTEGER);";
db.execSQL(CREATE);
你将收到
android.database.sqlite。
SQLiteException
SQLite异常,表示SQL解析或执行有错误。纠正你的查询。需要间隔。
尝试使用
String CREATE ="CREATE TABLE " + DATABASE_Bussiness + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ A_DATE + " TEXT, "
+ A_NAME + " TEXT, "
+ A_AMOUNT + " INTEGER "
+ ")";
清理-重建-卸载应用程序并重新运行。.
列名和类型之间没有空格。例如:. A_NAME + "TEXT..."
. 应该是 A_NAME + " TEXT..."
见TEXT前的空格)。
另外,在CREATE和表名之间 "CREATE TABLE" +DATABASE_Bussiness
. 请注意,前面的空格是 +
不在字符串字面意思之内。字符串外的空格无关紧要。"a"+"b"
与 "a" + "b"
. 两者的结果都是 "ab"
. 但是... "a " + "b"
给予 "a b"
.
您也可以使用 串插 (美元)和a 逐字稿 (@). 这是更可读的
String CREATE = $@"CREATE TABLE {DATABASE_Bussiness} (
{KEY_ID} INTEGER primary key AUTOINCREMENT,
{A_DATE} TEXT,
{A_NAME} TEXT,
{A_AMOUNT} INTEGER);";
db.execSQL(CREATE);
另外,变量必须包含列名而不是列值。在表被创建后,值会被插入到表中。INSERT INTO 命令。结果应该是这样的。
CREATE TABLE Deposit (
DepositId INTEGER primary key AUTOINCREMENT,
Valuta TEXT,
Descrition TEXT,
Amount INTEGER);
表和列的名称不应该是SQLite语言的关键字。