当前位置: 代码迷 >> SQL >> sqlite两种形式实现增删改查
  详细解决方案

sqlite两种形式实现增删改查

热度:56   发布时间:2016-05-05 10:49:05.0
sqlite两种方式实现增删改查

sqlite有两种方式操作数据库:

?

? ? ?第一种就是像oracle一样直接写sql语句

? ? 第二种就是借助工具,只写关键代码

?

下面将对这两种方式进行演示:



?

?

1,在xml中创建按钮,进行 查询和 固定的删除,修改,添加,?

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <TextView        android:id="@+id/textView1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_marginTop="130dp" />    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_below="@+id/textView1"        android:layout_marginLeft="18dp"        android:layout_marginTop="44dp"        android:onClick="optionuser"        android:text="添加" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBottom="@+id/button1"        android:layout_marginLeft="46dp"        android:layout_toRightOf="@+id/button1"        android:onClick="optionuser"        android:text="删除" />    <Button        android:id="@+id/button3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/button1"        android:layout_below="@+id/button1"        android:layout_marginTop="22dp"        android:onClick="optionuser"        android:text="修改" />    <Button        android:id="@+id/button4"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/button3"        android:layout_alignBottom="@+id/button3"        android:layout_alignLeft="@+id/button2"        android:onClick="optionuser"        android:text="查询" /></RelativeLayout>

?

2,创建数据库的表的类

public class HelperDemo extends SQLiteOpenHelper{	public HelperDemo(Context context, String name, CursorFactory factory,			int version) {	//参数一:上下文		//参数二:数据库的名字		//参数三:游标 没有游标就为null		//参数四:数据库的版本号 版本号不能小于当前的版本号		super(context, name, factory, version);		// TODO Auto-generated constructor stub	}	@Override	public void onCreate(SQLiteDatabase db) {		//创建表		String sql="create table user(_id integer primary key autoincrement,userphone txet,username text)";		db.execSQL(sql);	}	@Override	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {		// TODO Auto-generated method stub			}}

?

分析:

创建数据库 需要继承SQLiteOpenHelper 并重写里面的onCreate()和onUpgrade()方法;

?

onCreate()方法;创建表 ? 回调函数 ?在程序执行时需要操作该表时,如发现没有该表就会回调onCreate方法创建表;该方法只会执行一次

?

onUpgrade();当版本号更新时,会回调该函数

?

?

3,实现增删改查的操作(两种方式);

/** *  * @author Administrator 数据库的操作 */public class DemoDB extends Activity {     //v1显示查询的结果   //t1,t2,t3,t4分别是增删改查按钮	private TextView v1;	private Button t1;	private Button t2;	private Button t3;	private Button t4;	private HelperDemo demo; 获取数据库对象	private SQLiteDatabase database;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main_db);             //实例化数据库对象		demo = new HelperDemo(this, "user_contacts", null, 1);        //获得xml的组件		v1 = (TextView) this.findViewById(R.id.textView1);		t1 = (Button) this.findViewById(R.id.button1);		t2 = (Button) this.findViewById(R.id.button2);		t3 = (Button) this.findViewById(R.id.button3);		t4 = (Button) this.findViewById(R.id.button4);	}	// 数据库的操作	public void optionuser(View v) {		switch (v.getId()) {		case R.id.button1:// 添加数据		database = demo.getWritableDatabase(); //获得写数据的对象                  //判断是否可以写数据等操作			if (database == null) {			Toast.makeText(this, "不能添加数据", Toast.LENGTH_SHORT).show();			} else {				// 第一个方式		     String sql = "insert into user values(null,'12345','长沙')";				database.execSQL(sql);				// 第二种方式				// 参数一:表名				// 参数二:null				// 参数三:使用ContentValues赋值				// ContentValues values = new ContentValues();				// values.put("userphone", "123");				// values.put("username", "value");				//				// database.insert("user", null, values);				selectuser();			}			break;		case R.id.button2:// 删除			database = demo.getWritableDatabase();			if (database == null) {		Toast.makeText(this, "不能删除数据数据", Toast.LENGTH_SHORT).show();			} else {				// //第一种方式				// String sql ="delete from user where _id=?";				// String[] str= {"1"};				// database.execSQL(sql, str);				// 第二种方式				// 参数一:表名				// 参数二:条件				// 参数三:条件的值				String whereClause = "_id=?";				String[] whereArgs = { "2" };				database.delete("user", whereClause, whereArgs);			}			selectuser();			break;		case R.id.button3:// 修改			database = demo.getWritableDatabase();			if (database == null) {		Toast.makeText(this, "不能修改数据", Toast.LENGTH_SHORT).show();			} else {				// 第一种方式		// String sql="update user set username='武汉' where _id=6";				// database.execSQL(sql);				// 参数一:表名				// 参数二:更新的值				// 参数三:?的字段名				// 参数四:?字段名的值				ContentValues values = new ContentValues();				values.put("username", "北京");				String whereClause = "_id=?";				String[] whereArgs = { "5" };				database.update("user", values, whereClause, whereArgs);			}			selectuser();			break;		case R.id.button4:// 查询			selectuser();			break;		}	}	// 查询	public void selectuser() {		SQLiteDatabase database2 = demo.getReadableDatabase();//		// 第一种方式//		String sql = "select * from user order by _id desc";//		Cursor c = database2.rawQuery(sql, null);//		StringBuffer buffer = new StringBuffer();//		while (c.moveToNext()) {//			int id = c.getInt(c.getColumnIndex("_id"));//			String phone = c.getString(c.getColumnIndex("userphone"));//			String name = c.getString(c.getColumnIndex("username"));//			buffer.append(id + "\t姓名:\t" + name + "<><>电话:\t" + phone + "\r\n");//		}//		v1.setText(buffer);				//第二种方式		//参数一:表名		//查询数据会返回一个游标对象,遍历游标对象就得到值		Cursor c=database2.query("user", null, null, null, null, null, null);		StringBuffer buffer = new StringBuffer();		while (c.moveToNext()) {			int id = c.getInt(c.getColumnIndex("_id"));			String phone = c.getString(c.getColumnIndex("userphone"));			String name = c.getString(c.getColumnIndex("username"));		buffer.append(id + "\t姓名:\t" + name + "<><>电话:\t" + phone + "\r\n");		}		v1.setText(buffer);	}}

?

?

分析:

增删改;需要判断数据库的表是否可以进行写的操作;

database = demo.getWritableDatabase();

if (database == null) {

Toast.makeText(this, "不能修改数据", Toast.LENGTH_SHORT).show();

}

?

?

?

?

?

?

  相关解决方案