1.建立一個數據庫 java
package com.sqlite.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class Persondb extends SQLiteOpenHelper { public Persondb(Context context) { super(context, "person.db", null, 2); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL( "create table person (id integer primary key autoincrement," + "name varchar(20),number varchar(20))" ); } @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { db.execSQL("ALTER table person add account varchar(20)"); } }
2.建立一個數據庫操做類 android
package com.sqlite.person.dao; import java.util.ArrayList; import java.util.List; import com.sqlite.db.Persondb; import com.sqlite.person.domain.Person; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class PersonDao { private SQLiteOpenHelper helper; public PersonDao(Context context){ helper = new Persondb(context); } /** * 添加一條數據 * @param name * @param number */ public void add(String name, String number) { SQLiteDatabase db = helper.getWritableDatabase(); /* db.execSQL( "INSERT INTO person (name,number)VALUES(?,?)", new Object[]{name, number} );*/ ContentValues values = new ContentValues(); values.put("name", name); values.put("number", number); db.insert("person", null, values); db.close(); } /** * 測試查找數據庫是否有這條記錄 * @param name * @return */ public boolean find(String name) { SQLiteDatabase db = helper.getReadableDatabase(); /* Cursor cursor = db.rawQuery( "SELECT * FROM person WHERE name = ?", new String[]{name} );*/ Cursor cursor = db.query("person", null, "name=?", new String[]{name}, null, null, null); boolean res = cursor.moveToNext(); cursor.close(); db.close(); return res; } /** * 修改數據 * @param name * @param number */ public void update(String name, String number) { SQLiteDatabase db = helper.getWritableDatabase(); /* db.execSQL( "UPDATE person SET number = ? WHERE name = ?", new Object[]{number,name} );*/ ContentValues values = new ContentValues(); values.put("number", number); db.update("person", values, "name=?", new String[]{name}); db.close(); } /** * 刪除 * @param name */ public void del(String name) { SQLiteDatabase db = helper.getWritableDatabase(); /* db.execSQL( "DELETE FROM person WHERE name = ?", new Object[]{name} );*/ db.delete("person", "name=?", new String[]{name}); db.close(); } /** * 返回全部記錄 * @return */ public List<Person> findAll() { SQLiteDatabase db = helper.getReadableDatabase(); //Cursor cursor = db.rawQuery("SELECT * FROM person", null); Cursor cursor = db.query("person", new String[]{"name","id","number"}, null, null, null, null,null); List<Person> persons = new ArrayList<Person>(); while(cursor.moveToNext()){ Person p = new Person(); p.setId(cursor.getInt(cursor.getColumnIndex("id"))); p.setName(cursor.getString(cursor.getColumnIndex("name"))); p.setNumber(cursor.getString(cursor.getColumnIndex("number"))); persons.add(p); } cursor.close(); db.close(); return persons; } String s; public void transaction(String name1,String name2,int account) { SQLiteDatabase db = helper.getWritableDatabase(); db.beginTransaction(); try { ContentValues val1 = new ContentValues(); ContentValues val2 = new ContentValues(); val1.put("account", account); val2.put("account", account); db.update("person", val1, "name=?", new String[]{name1}); db.update("person", val2, "name=?", new String[]{name2}); s.equals("xx"); db.setTransactionSuccessful(); } catch (Exception e) { // TODO: handle exception } finally { db.endTransaction(); db.close(); } } }
package com.sqlite.person.domain; public class Person { private String name; private String number; private int id; public Person() { } public Person(String name, String number) { this.name = name; this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String toString() { return "Person [name=" + name + ", number=" + number + ", id=" + id + "]"; } }
package com.sqlite.test; import java.util.List; import com.sqlite.db.Persondb; import com.sqlite.person.dao.PersonDao; import com.sqlite.person.domain.Person; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.test.AndroidTestCase; public class DbTest extends AndroidTestCase { public void testCreate() { Persondb pdb = new Persondb(getContext()); pdb.getWritableDatabase(); } /** * 添加 */ public void testAdd() { PersonDao pd = new PersonDao(getContext()); pd.add("xiaohei", "133000"); } /* * 測試查詢 **/ public void testFind() { PersonDao pd = new PersonDao(getContext()); boolean res = pd.find("testTang"); assertEquals(true, res); } /** * 測試修改 */ public void testUpdate() { PersonDao pd = new PersonDao(getContext()); pd.update("testTang", "150000"); } /** * 測試刪除 */ public void testDel() { PersonDao pd = new PersonDao(getContext()); pd.del("testTang"); } /** * 測試查詢全部 */ public void testFindAll() { PersonDao pd = new PersonDao(getContext()); List<Person> list = pd.findAll(); StringBuffer bf = new StringBuffer(); for (Person p : list) { bf.append(p.toString()); } System.out.println(bf); } public void testTransaction() { PersonDao pd = new PersonDao(getContext()); pd.transaction("testTang", "xiaohei", 1000); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sqlite.db" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <instrumentation #這裏測試必須加 android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.sqlite.db" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.sqlite.db.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="android.test.runner" />#還有這裏測試也得加 </application> </manifest>