2013-10-17 65 views
2

我是android數據庫開發新手。下面的代碼是我的第一個代碼。 執行此代碼後,我看到我的數據庫表中沒有插入任何內容。 我的代碼有什麼問題?爲什麼在SQLite上這個插入命令什麼都不做?

這是我dbHelper類:

public class DbHelper extends SQLiteOpenHelper{ 

    public DbHelper(Context context) { 
     super(context, "shit.db", null, 1); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String sql = "create table users (userID integer primary key autoincrement,name text,family text,age integer);"; 
     Log.d("Ehsan", sql); 
     db.execSQL(sql); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 

} 

這是我的主要活動的onCreate方法:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.d("Ehsan", "Started"); 

     DbHelper db = new DbHelper(this); 
     Log.d("Ehsan", "DB Created"); 
     SQLiteDatabase mydb =db.getWritableDatabase(); 

     ContentValues cv = new ContentValues(); 
     cv.put("name", "Ehsan"); 
     cv.put("family", "Shirzadi"); 
     cv.put("age", 29); 
     Log.d("Ehsan", "Record inserting"); 
     long id = mydb.insert("users",null, cv); 
     Log.d("Ehsan", "Record inserted"); 
    } 
+0

您收到了哪些錯誤? –

+0

@Lokesh是的。但是在運行代碼後它是空的。 –

回答

5

有幾件事情:

起初刪除分號;這種性格使得唯一的問題。其次你指定的年齡列整數,所以你應該把整數和不串入ContentValues:

cv.put("age", 29); 

現在它應該工作。

注意:列也區分大小寫,所以你應該保持相同的大小寫。對於這樣的問題(不正確的列名稱)通常建議使用靜態字段,其中保留您的列名稱:

public static final String KEY_AGE = "age"; 
... 
+0

SQLite不使用區分大小寫的列既不強制列類型定義... –

+0

這很有趣你在說什麼,因爲在我的情況(在過去)如果我定義列爲類型和寫入類型它不適用於我。 ContentValues也應該保持正確的數據類型!代碼更容易被另一個用戶讀取。 – Sajmon

+0

刪除分號是什麼意思?所有在java中的命令都需要以分號結尾,並且沒有引發語法錯誤。 –

0

您指定的年齡字段作爲一個整數,但是你想在那裏放一個字符串。

試試這個:

ContentValues cv = new ContentValues(); 
cv.put("Name", "Ehsan"); 
cv.put("Family", "Shirzadi"); 
cv.put("Age", 29); 
Log.d("Ehsan", "Record inserting"); 
long id = mydb.insert("users",null, cv); 

希望這有助於:)

+0

SQLite不關心它。 –

+0

是否SQLite區分大小寫?我注意到他的列名都是小寫字母,當他插入它時,他將首字母大寫。也許這可能是另一個問題? – Keale

+0

我糾正了,但沒有任何反應,仍然沒有記錄在我的表中。 –