您的位置:首页 > 移动开发 > Android开发

Android SQLite数据库操作

2014-05-23 16:21 295 查看
数据库操作类:SQLiteDatabase

在Android系统之中,一个android.database,sqlite.SQLiteDatebase类的实例都代表了一个SQLite数据库的操作,通过SQLiteDatabase类可以执行SQL语句,可以完成对数据表的增加,修改,删除,查询等操作,在此类之中定义了基本的数据库执行SQL语句的操作方法以及一些操作的模式常量。

1.MyDatabaseHelper类

public class MyDatabaseHelper extends SQLiteOpenHelper{

private static final String DATABASENAME = "wei.db";

private static final int DATABASEVERSION = 1;

private static final String TABLENAME = "mytable";

public MyDatabaseHelper(Context context) {

super(context, DATABASENAME, null, DATABASEVERSION);

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

String sql = "CREATETABLE" + DATABASENAME + "("

+"id INTEGER PRIMARY KAY,"

+"NAME VERCHAR(50) NOT NULL,"

+"birthday DATA NOT NULL"+")";

db.execSQL(sql); //执行SQL

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

String sql = "DROP TABLE IF EXISTS" + TABLENAME;

db.execSQL(sql);

this.onCreate(db);

}

}

这样一个数据库的辅助操作类就完成了,那么完成之后,就需要在Activity中调用此类对象的方法。

一个是getReadableDatabase()一个是getWriteableDatabase()

2.MySQLiteDemo类

public class MySQLiteDemo extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_my_sqlite_demo);

SQLiteOpenHelper helper = new MyDatabaseHelper(this);

helper.getWritableDatabase();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.activity_my_sqlite_demo, menu);

return true;

}

}

现在应该可以去的链接了,如果没有出现错误,,则应该从指定位置上进行查找,如果数据库不存在,那么肯定会调用onCreate方法创建表,如果现在数据库存在了,但是版本号改了,则先将数据表删除掉,然后在创建新的数据表,如果没有任何变化,不执行任何操作。

android 使用SQLite数据库并完成数据库的更新操作

在操作数据库的时候可以直接在Android之中使用shell命令。

Android中的shell命令是依靠adb取得,而且可以取得一个正在运行的模拟器的shell。但是要注意的是,在AndroidSDK2.3之前的版本ADB可以直接使用,但是现在的版本不太一样,除了tools文件夹之中的内容之外,还需要配置宇哥platform-tools文件夹,表示平台工具。

配置完成之后就可以通过下面的命令完成。

1,进入到shell adb shell

2,可以使用ls命令列出所有的内容;

3,进入到sqlite数据库成成的文件夹之中;

4,进入到目录之后就可以利用sqlite命令找到wei.db;

5,可以输入“help命令,查看所有可用的命令;

6,可以输入schema命令,查看所有的表;

7,既然已经找到了数据表,那么下面可以执行SQL语句

向mytable表中增加数据;INSERT INTO mytable(name,birthday)VALUES(“爱德华”,1999-09-09)

查看mytable的数据,SELECT id,name,birthday FROM mytable;

修改记录:UPDATE mytable SET birthday='1999-09-08' WHERE id = 1;

删除数据:DELETE FROM mytable WHERE ID = 1;

这些操作都属于标准的SQL语句,可是现在如果要使用数据库肯定不能让用户自己输入这些命令,需要通过程序进行包装,模仿DAO的思路,下面单独做一个操作类。操作mytable表

MytableOperate类代码

public class MytableOperate {

private static final String TABLENAME = "mytable";//表示要操作数据表的名称

private SQLiteDatabase db = null;

public MytableOperate(SQLiteDatabase db){

this.db = db;

}

public void insert(String name,String birthday){

String sql = "INSERT INTO"+TABLENAME + "(name,birthday)VALUES('" + name + "','" + birthday + "')";

this.db.execSQL(sql);

this.db.close();

}

public void update(int id,String name,String birthday){

String sql = "UPDATE"+TABLENAME + "SET name= " + name+"',birthday = '" + birthday + "'WHERE id = '"+id;

this.db.execSQL(sql);

this.db.close();

}

public void delete(int id){

String sql = "DELETE FROM"+ TABLENAME + "WHERE id = " + id;

this.db.execSQL(sql);

this.db.close();

}

}

本程序中是完成了数据表的更新操作,下面为了模拟出是前台,定义一个布局文件,里面定义三个按钮;

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MySQLiteDemo" >

<Button

android:id="@+id/insertbtn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="增加数据"/>

<Button

android:id="@+id/updatebtn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="更新数据"/>

<Button

android:id="@+id/deletebtn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="删除数据"/>

</LinearLayout>

MySQLiteDemo 执行增删改的操作

public class MySQLiteDemo extends Activity {

private Button insertBut = null ;

private Button updateBut = null ;

private Button deleteBut = null ;

private SQLiteOpenHelper helper = null ;

private MytabOperate mtab = null ;

private static int count = 0 ;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

super.setContentView(R.layout.main);

this.helper = new MyDatabaseHelper(this);

this.insertBut = (Button) super.findViewById(R.id.insertBut) ;

this.updateBut = (Button) super.findViewById(R.id.updateBut) ;

this.deleteBut = (Button) super.findViewById(R.id.deleteBut) ;

this.insertBut.setOnClickListener(new InsertOnClickListenerImpl()) ;

this.updateBut.setOnClickListener(new UpdateOnClickListenerImpl()) ;

this.deleteBut.setOnClickListener(new DeleteOnClickListenerImpl()) ;

}

private class InsertOnClickListenerImpl implements OnClickListener{

@Override

public void onClick(View v) {

MySQLiteDemo.this.mtab = new MytabOperate(

MySQLiteDemo.this.helper.getWritableDatabase());

MySQLiteDemo.this.mtab.insert("李兴华" + count++, "1979-08-12") ;

}

}

private class UpdateOnClickListenerImpl implements OnClickListener{

@Override

public void onClick(View v) {

MySQLiteDemo.this.mtab = new MytabOperate(

MySQLiteDemo.this.helper.getWritableDatabase());

MySQLiteDemo.this.mtab.update(3, "MLDN", "1981-06-27");

}

}

private class DeleteOnClickListenerImpl implements OnClickListener{

@Override

public void onClick(View v) {

MySQLiteDemo.this.mtab = new MytabOperate(

MySQLiteDemo.this.helper.getWritableDatabase());

MySQLiteDemo.this.mtab.delete(3) ;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: