標籤:
package com.hanqi.cunchu;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class shujuku extends AppCompatActivity { EditText name,id,sex,age; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.shujuku); id=(EditText)findViewById(R.id.i1); name=(EditText)findViewById(R.id.i2); sex=(EditText)findViewById(R.id.i3); age=(EditText)findViewById(R.id.i4); } //初始化資料庫 public void b1(View view){ //使用工具類得到資料庫物件 //test表名 mdb mdb = new mdb("test",1); //得到串連 SQLiteDatabase sqLiteDatabase= mdb.getWritableDatabase(); //關閉串連 sqLiteDatabase.close(); } public void b2(View view){ //使用工具類得到資料庫物件 mdb mdb = new mdb("test",2); //得到串連 SQLiteDatabase sqLiteDatabase= mdb.getWritableDatabase(); //關閉串連 sqLiteDatabase.close(); } public void b3(View view){ //串連資料庫,得到資料庫連接對象 //注意版本號碼 SQLiteDatabase sqLiteDatabase=new mdb("test",2).getWritableDatabase(); //得到資料 ContentValues cv=new ContentValues(); cv.put("_id", id.getText().toString()); cv.put("name",name.getText().toString()); cv.put("sex", sex.getText().toString()); cv.put("age",age.getText().toString()); //調用 insert(),插入資料 //添加表名。不是檔案名稱 long l=sqLiteDatabase.insert("NewTable",null,cv); Toast.makeText(shujuku.this, "增加的資料條數"+l, Toast.LENGTH_SHORT).show(); //關閉串連 sqLiteDatabase.close(); } public void b4(View view){ //串連資料庫,得到資料庫連接對象 SQLiteDatabase sqLiteDatabase=new mdb("test",2).getWritableDatabase(); //搜尋全表欄位,null代表搜尋條件 Cursor c= sqLiteDatabase.query("NewTable", null, null, null, null, null, null); //遍曆結果 while (c.moveToNext()){ //讀取資料 //getstring(表中的排列順序,從0開始,類似索引) String st=c.getLong(c.getColumnIndex("_id"))+"name="+c.getString(1)+"sex="+c.getString(2) +"age="+c.getString(3); String st2=c.getLong(c.getColumnIndex("_id"))+"name="+c.getString(0); Log.e("tag",st); Log.e("tag",st2); } //關閉串連 sqLiteDatabase.close(); c.close(); } //內部類 class mdb extends SQLiteOpenHelper{ //(要建立的檔案名稱,版本號碼) public mdb(String dbname,int ver){ //顯示調用父類的構造方法 //必須在第一行 //(content,資料庫名,預設值,版本號碼) super(shujuku.this,dbname,null,ver); } //建立初始化資料庫 @Override public void onCreate(SQLiteDatabase db) { //1.執行建立資料的語句 String sql="CREATE TABLE \"main\".\"NewTable\" (\"_id\" INTEGER NOT NULL," + "\"name\" varchar(20),\"sex\" char(1)," + "\"age\" INTEGER,PRIMARY KEY (\"_id\")\n" + ")\n" + ";"; //void execSQL(sql語句); //通常是建表,修改或刪除表等語句 db.execSQL(sql); Log.e("tag","建立完成"); //2.執行初始化資料的語句,insert語句 // ContentValues 放入值的方法 ContentValues cv=new ContentValues(); cv.put("name","張三"); cv.put("sex","男"); cv.put("age",15); //執行插入 //表名,欄位的預設值,要插入的值 long l= db.insert("NewTable",null,cv); //l返回新插入資料的主索引值_id //失敗返回-1 Log.e("tag","初始化資料"+l); } //升級資料庫 //觸發條件,當版本號碼增大 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //修改資料 if(newVersion==2){ ContentValues cv=new ContentValues(); cv.put("name","李四"); //String sql="update NewTable set name=‘李四‘ where _id=1"; // db.execSQL(sql); String s[]={"1","18"}; //調用db的更新方法 //"表名",contentValues,帶預留位置?的where條件,String[]匹配?的條件值的數組 int i= db.update("NewTable",cv,"_id=? and age <?",s); //i返回改變的資料條數 //失敗返回-1 Log.e("tag", "升級資料 資料條數=" + i); } } }}
安卓資料庫的基本操作