Android之SQLite 学习二

来源:互联网 发布:淘宝自动发货订单 编辑:程序博客网 时间:2024/05/21 18:25

接着上次的学习,函数public void onCreate(SQLiteDatabase db)是在调用getReadableDatabase()或者是getWritableDatabase()第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法.

  1. public void onCreate(SQLiteDatabase db) {  
  2.   System.out.println("create a Database");  
  3.   //execSQL函数用于执行SQL语句  
  4.   db.execSQL("create table user(id int,name varchar(20))");  
  5. }  
  6.  

在向数据库的表中插入记录时,需要先将数据包含在一个ContentValues中,向该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致。接着调用Databasehelper的getWritableDatabase方法来获得可以写入的Databasehelper对象,再向其中insert记录。注意调用DatabaseHelper对象的insert,update或者query方法的参数的传递。

另外执行query方法后,返回的是一个Cursor游标,游标最开始指向的是记录集合中第一行的上一行,因此首先需要先调用cursor.next()将游标移动到记录集合的第一行,接着再获取数据即可。

Java代码

  1.     public class SQLiteActivity extends Activity {    
  2.     /** Called when the activity is first created. */     
  3.     private Button createButton;      
  4.     private Button insertButton;      
  5.     private Button updateButton;      
  6.     private Button updateRecordButton;        
  7.     private Button queryButton;       
  8.     @Override     
  9.     public void onCreate(Bundle savedInstanceState) {     
  10.         super.onCreate(savedInstanceState);       
  11.         setContentView(R.layout.main);        
  12.         createButton = (Button)findViewById(R.id.createDatabase);     
  13.         updateButton = (Button)findViewById(R.id.updateDatabase);     
  14.         insertButton = (Button)findViewById(R.id.insert);     
  15.         updateRecordButton = (Button)findViewById(R.id.update);       
  16.         queryButton = (Button)findViewById(R.id.query);       
  17.         createButton.setOnClickListener(new CreateListener());        
  18.         updateButton.setOnClickListener(new UpdateListener());        
  19.         insertButton.setOnClickListener(new InsertListener());        
  20.         updateRecordButton.setOnClickListener(new UpdateRecordListener());        
  21.         queryButton.setOnClickListener(new QueryListener());      
  22.     }     
  23.     class CreateListener implements OnClickListener{      
  24.         @Override     
  25.         public void onClick(View v) {     
  26.             //创建一个DatabaseHelper对象        
  27.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");     
  28.             //只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是
  29. getWritableDatabase()方法之后,才会创建,或打开一个数据库        
  30.             SQLiteDatabase db = dbHelper.getReadableDatabase();       
  31.         }     
  32.     }     
  33.     class UpdateListener implements OnClickListener{      
  34.       
  35.         @Override     
  36.         public void onClick(View v) {     
  37.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);       
  38.             SQLiteDatabase db = dbHelper.getReadableDatabase();       
  39.         }     
  40.               
  41.     }     
  42.     class InsertListener implements OnClickListener{      
  43.       
  44.         @Override     
  45.         public void onClick(View v) {     
  46.             //生成ContentValues对象       
  47.             ContentValues values = new ContentValues();       
  48.             //想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致        
  49.             values.put("id", 1);      
  50.             values.put("name","zhangsan");        
  51.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);       
  52.             SQLiteDatabase db = dbHelper.getWritableDatabase();       
  53.             //调用insert方法,就可以将数据插入到数据库当中       
  54.             db.insert("user", null, values);      
  55.         }     
  56.     }     
  57.     //更新操作就相当于执行SQL语句当中的update语句      
  58.     //UPDATE table_name SET XXCOL=XXX WHERE XXXXCOL=XX...       
  59.     class UpdateRecordListener implements OnClickListener{        
  60.       
  61.         @Override     
  62.         public void onClick(View arg0) {      
  63.             // TODO Auto-generated method stub        
  64.             //得到一个可写的SQLiteDatabase对象     
  65.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");     
  66.             SQLiteDatabase db = dbHelper.getWritableDatabase();       
  67.             ContentValues values = new ContentValues();       
  68.             values.put("name", "zhangsanfeng");       
  69.             //第一个参数是要更新的表名        
  70.             //第二个参数是一个ContentValeus对象     
  71.             //第三个参数是where子句       
  72.             db.update("user", values, "id=?", new String[]{"1"});     
  73.         }     
  74.     }     
  75.     class QueryListener implements OnClickListener{       
  76.       
  77.         @Override     
  78.         public void onClick(View v) {     
  79.             System.out.println("aaa------------------");      
  80.             Log.d("myDebug", "myFirstDebugMsg");      
  81.                   
  82.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.
  83. this,"test_mars_db");     
  84.             SQLiteDatabase db = dbHelper.getReadableDatabase();       
  85.             Cursor cursor = db.query("user", new String[]{"id","name"}, 
  86. "id=?", new String[]{"1"}, null, null, null);     
  87.             while(cursor.moveToNext()){       
  88.                 String name = cursor.getString(cursor.getColumnIndex("name"));        
  89.                 System.out.println("query--->" + name);       
  90.             }     
  91.         }     
  92.     }     
  93.           
  94. }     
原创粉丝点击