2012-12-15 156 views
1
public class MyAct extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     SQLiteDatabase db = openOrCreateDatabase("MyDb",MODE_PRIVATE,null); 
     db.execSQL("CREATE TABLE IF NOT EXISTS MyTab (Month INT(2),Date INT(2),Year INT(4),Event VARCHAR;"); 
     db.execSQL("INSERT INTO MyTab VALUES (0,1,2012,'mini_proj');"); 
     db.close(); 

    } 
} 

我已經寫了這個小片段來創建一個表,但它不工作。這段代碼有什麼問題?如何在android中使用sqlite數據庫創建表?

+0

你是什麼意思不工作?它是一個崩潰? – nandeesh

+1

你錯過了')'。另外,刪除';' –

+0

@nandeesh no ...在ddms中它沒有顯示數據庫表的名稱 – user1906481

回答

2

在第一個查詢,你缺少一個右大括號:

CREATE TABLE IF NOT EXISTS MyTab (
    Month INT(2), 
    Date INT(2), 
    Year INT(4), 
    Event VARCHAR; 

它應該是:

CREATE TABLE IF NOT EXISTS MyTab (
    Month INT(2), 
    Date INT(2), 
    Year INT(4), 
    Event VARCHAR 
) 

而且,請注意查詢不需要用;結束,如文檔中所述:

參數
sql要執行的SQL語句。 不支持用分號分隔的多個語句。

此外,你應該總是檢查您logcat的輸出,因爲這應該拋出一個SQLiteException


一些進一步的SQLite的注意事項:

  1. SQLite沒有一個VARCHAR型。它將only has TEXT並將任何文字類型轉換成它。
  2. 注意,給一個數據類型的長度也忽視了SQLite的:對字符串的長度

SQLite的不強加任何長度限制(比大 全球SQLITE_MAX_LENGTH限制等), BLOBs或 數值。

+0

我修改了我的代碼,但仍然沒有反映在ddms.now中是什麼意思? – user1906481

+0

閱讀LogCat輸出。另外,Datbase的東西應該放到'SQliteDatabaseHelper'中。 –

+0

感謝您的答覆。是的...我已經包含SQLiteDatabaseHelper。 – user1906481

相關問題