我爲Android Phone創建了一個電子郵件客戶端,現在我想將電子郵件保存在SQLite數據庫中。但是,如果我想用測試數據僅填充數據庫,我這個錯誤:Android SQL databse創建時出錯
E/SQLiteLog(21212): (1) near "TO": syntax error
E/SQLiteDatabase(21212): Error inserting SUBJECT=test subject TO=emailadress2 FROM=emailadress1 CONTENT=test content
android.database.sqlite.SQLiteException: near "TO": syntax error (code 1): , while compiling: INSERT INTO MAIL(SUBJECT,TO,FROM,CONTENT) VALUES (?,?,?,?)
(...)
(1) near "FROM": syntax error
E/Error(21212): android.database.sqlite.SQLiteException: near "FROM": syntax error (code 1): , while compiling: SELECT ID, FROM, TO, SUBJECT, CONTENT FROM MAIL WHERE ID = -1
我用下面的代碼數據庫:
MAINACTIVITY.java
public void dbCreate(View view){
String from = "emailadress1";
String to = "emailadress2";
String subject = "test subject";
String content = "test content";
try {
datasource.open();
datasource.createEntry(from, to, subject, content);
datasource.close();
}
catch (Exception ex) {
Toast.makeText(this,"Error", Toast.LENGTH_LONG).show();
Log.e("Error", ex.toString());
}
}
MYSQLiteHelper.java
private static final String DATABASE_NAME = "mail.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_CREATE_MAIL = "CREATE TABLE MAILS ( ID integer PRIMARY KEY AUTOINCREMENT, FROM TEXT, TO TEXT, SUBJECT TEXT, CONTENT TEXT);";
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
Log.i("Info", "OnCreate aufgerufen");
database.execSQL(TABLE_CREATE_MAIL);
}
DATASOURCE.java
private SQLiteDatabase database;
private MySQLiteHelper dbHelper;
private String[] allColumns = { "ID", "FROM",
"TO", "SUBJECT", "CONTENT"};
public Entry createEntry(String from, String to, String subject, String content) {
ContentValues values = new ContentValues();
values.put("FROM", from);
values.put("TO", to);
values.put("SUBJECT", subject);
values.put("CONTENT", content);
long insertId = database.insert("MAIL", null,
values);
Cursor cursor = database.query("MAIL",allColumns, "ID = " + insertId, null, null, null, null, null);
cursor.moveToFirst();
return cursorToEntry(cursor);
}
你的表名是MAILS插入數據時,但你插入MAIL也可能是一個問題 – vinoth 2013-05-04 11:31:27