接着上次的学习,函数public void onCreate(SQLiteDatabase db)是在调用getReadableDatabase()或者是getWritableDatabase()第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法.
- public void onCreate(SQLiteDatabase db) {
- System.out.println("create a Database");
- //execSQL函数用于执行SQL语句
- db.execSQL("create table user(id int,name varchar(20))");
- }
在向数据库的表中插入记录时,需要先将数据包含在一个ContentValues中,向该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致。接着调用Databasehelper的getWritableDatabase方法来获得可以写入的Databasehelper对象,再向其中insert记录。注意调用DatabaseHelper对象的insert,update或者query方法的参数的传递。
另外执行query方法后,返回的是一个Cursor游标,游标最开始指向的是记录集合中第一行的上一行,因此首先需要先调用cursor.next()将游标移动到记录集合的第一行,接着再获取数据即可。
Java代码
- public class SQLiteActivity extends Activity {
- /** Called when the activity is first created. */
- private Button createButton;
- private Button insertButton;
- private Button updateButton;
- private Button updateRecordButton;
- private Button queryButton;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- createButton = (Button)findViewById(R.id.createDatabase);
- updateButton = (Button)findViewById(R.id.updateDatabase);
- insertButton = (Button)findViewById(R.id.insert);
- updateRecordButton = (Button)findViewById(R.id.update);
- queryButton = (Button)findViewById(R.id.query);
- createButton.setOnClickListener(new CreateListener());
- updateButton.setOnClickListener(new UpdateListener());
- insertButton.setOnClickListener(new InsertListener());
- updateRecordButton.setOnClickListener(new UpdateRecordListener());
- queryButton.setOnClickListener(new QueryListener());
- }
- class CreateListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- //创建一个DatabaseHelper对象
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
- //只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是
- getWritableDatabase()方法之后,才会创建,或打开一个数据库
- SQLiteDatabase db = dbHelper.getReadableDatabase();
- }
- }
- class UpdateListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);
- SQLiteDatabase db = dbHelper.getReadableDatabase();
- }
- }
- class InsertListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- //生成ContentValues对象
- ContentValues values = new ContentValues();
- //想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
- values.put("id", 1);
- values.put("name","zhangsan");
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);
- SQLiteDatabase db = dbHelper.getWritableDatabase();
- //调用insert方法,就可以将数据插入到数据库当中
- db.insert("user", null, values);
- }
- }
- //更新操作就相当于执行SQL语句当中的update语句
- //UPDATE table_name SET XXCOL=XXX WHERE XXXXCOL=XX...
- class UpdateRecordListener implements OnClickListener{
- @Override
- public void onClick(View arg0) {
- // TODO Auto-generated method stub
- //得到一个可写的SQLiteDatabase对象
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
- SQLiteDatabase db = dbHelper.getWritableDatabase();
- ContentValues values = new ContentValues();
- values.put("name", "zhangsanfeng");
- //第一个参数是要更新的表名
- //第二个参数是一个ContentValeus对象
- //第三个参数是where子句
- db.update("user", values, "id=?", new String[]{"1"});
- }
- }
- class QueryListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- System.out.println("aaa------------------");
- Log.d("myDebug", "myFirstDebugMsg");
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.
- this,"test_mars_db");
- SQLiteDatabase db = dbHelper.getReadableDatabase();
- Cursor cursor = db.query("user", new String[]{"id","name"},
- "id=?", new String[]{"1"}, null, null, null);
- while(cursor.moveToNext()){
- String name = cursor.getString(cursor.getColumnIndex("name"));
- System.out.println("query--->" + name);
- }
- }
- }
- }