2013-10-17 48 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

我纠正了,但没有任何反应,仍然没有记录在我的表中。 –