Android-SQLite数据库操作详解手机开发

 主要就是创建数据库,添加、查询、更新、删除这几项。

首先是创建数据库,这里要用到SQLiteOpenHelper这个类,这是个抽象类,我们需要去继承他,它里面有两个抽象方法需要实现:onCreate()和onUpgrade(),分别是创建和升级数据库用的。

package com.wr.sqlite; 
 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.widget.Toast; 
 
public class MyDatebaseHelper extends SQLiteOpenHelper { 
 
	public static final String CREATE_BOOK = "create table Book (" 
			+ "id integer primary key autoincrement, " + "author text, " 
			+ "price real, " + "pages integer, " + "name text) "; 
 
	public static final String CREATE_CATEGORY = "create table Category (" 
			+ "id integer primary key autoincrement, " + "category_name text, " 
			+ "category_code integer) "; 
 
	private Context mContext; 
 
	public MyDatebaseHelper(Context context, String name, 
			CursorFactory factory, int version) { 
		super(context, name, factory, version); 
		mContext = context; 
		// TODO Auto-generated constructor stub 
	} 
 
	@Override 
	public void onCreate(SQLiteDatabase db) { 
		// TODO Auto-generated method stub 
		db.execSQL(CREATE_BOOK); 
		db.execSQL(CREATE_CATEGORY); 
		Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show(); 
	} 
 
	@Override 
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
		// TODO Auto-generated method stub 
		switch (oldVersion) { 
		case 1: 
			db.execSQL(CREATE_CATEGORY); 
		case 2: 
			db.execSQL("alter table Book add column category_id integer"); 
		} 
	} 
 
} 

这里将见表语句定义成了字符串,在哦你Create()方法中建表。

然后就是对数据库的一系列的操作,首先布局文件activity_main.xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
 
    <Button 
        android:id="@+id/create_database" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Create database" /> 
 
    <Button 
        android:id="@+id/add_data" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Add date" /> 
 
    <Button 
        android:id="@+id/update_data" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Update date" /> 
 
    <Button 
        android:id="@+id/delete_data" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Delete date" /> 
 
    <Button 
        android:id="@+id/query_data" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Query date" /> 
 
    <Button 
        android:id="@+id/replace_data" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Replace date" /> 
 
</LinearLayout>

最后在MainActiity中,实现一系列的操作。MainActivity.java

package com.wr.sqlite; 
 
import android.app.Activity; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
 
public class MainActivity extends Activity { 
 
	private MyDatebaseHelper dbHelper; 
 
	@Override 
	protected void onCreate(Bundle savedInstanceState) { 
		super.onCreate(savedInstanceState); 
		setContentView(R.layout.activity_main); 
 
		dbHelper = new MyDatebaseHelper(this, "BookStore.db", null, 2); 
		Button createDatabase = (Button) findViewById(R.id.create_database); 
		createDatabase.setOnClickListener(new OnClickListener() { 
 
			@Override 
			public void onClick(View v) { 
				// TODO Auto-generated method stub 
				dbHelper.getWritableDatabase(); 
			} 
		}); 
 
		Button addData = (Button) findViewById(R.id.add_data); 
		addData.setOnClickListener(new OnClickListener() { 
 
			@Override 
			public void onClick(View v) { 
				// TODO Auto-generated method stub 
				SQLiteDatabase db = dbHelper.getWritableDatabase(); 
				ContentValues values = new ContentValues(); 
 
				values.put("name", "The Da Vinci Code"); 
				values.put("author", "Dan Brown"); 
				values.put("pages", 454); 
				values.put("price", 16.96); 
				db.insert("Book", null, values); 
				values.clear(); 
 
				values.put("name", "The Lost Sysbol"); 
				values.put("author", "Dan Brown"); 
				values.put("pages", 510); 
				values.put("price", 19.95); 
				db.insert("Book", null, values); 
			} 
		}); 
 
		Button updateData = (Button) findViewById(R.id.update_data); 
		updateData.setOnClickListener(new OnClickListener() { 
 
			@Override 
			public void onClick(View arg0) { 
				// TODO Auto-generated method stub 
				SQLiteDatabase db = dbHelper.getWritableDatabase(); 
				ContentValues values = new ContentValues(); 
				values.put("price", 10.99); 
				db.update("Book", values, "name = ?", 
						new String[] { "The Da Vinci Code" }); 
			} 
		}); 
 
		Button deleteData = (Button) findViewById(R.id.delete_data); 
		deleteData.setOnClickListener(new OnClickListener() { 
 
			@Override 
			public void onClick(View arg0) { 
				// TODO Auto-generated method stub 
				SQLiteDatabase db = dbHelper.getWritableDatabase(); 
				db.delete("Book", "pages > ?", new String[] { "500" }); 
			} 
		}); 
 
		Button queryData = (Button) findViewById(R.id.query_data); 
		queryData.setOnClickListener(new OnClickListener() { 
 
			@Override 
			public void onClick(View arg0) { 
				// TODO Auto-generated method stub 
				SQLiteDatabase db = dbHelper.getWritableDatabase(); 
				Cursor cursor = db.query("Book", null, null, null, null, null, 
						null); 
				if (cursor.moveToFirst()) { 
					do { 
						String name = cursor.getString(cursor 
								.getColumnIndex("name")); 
						String author = cursor.getString(cursor 
								.getColumnIndex("author")); 
						int pages = cursor.getInt(cursor 
								.getColumnIndex("pages")); 
						double price = cursor.getDouble(cursor 
								.getColumnIndex("price")); 
 
						Log.d("MainActivity", "book name is " + name); 
						Log.d("MainActivity", "book author is " + author); 
						Log.d("MainActivity", "book pages is " + pages); 
						Log.d("MainActivity", "book price is " + price); 
					} while (cursor.moveToNext()); 
				} 
				cursor.close(); 
			} 
		}); 
 
		Button replaceData = (Button) findViewById(R.id.replace_data); 
		replaceData.setOnClickListener(new OnClickListener() { 
 
			@Override 
			public void onClick(View arg0) { 
				// TODO Auto-generated method stub 
				SQLiteDatabase db = dbHelper.getWritableDatabase(); 
				db.beginTransaction(); 
				try { 
					db.delete("Book", null, null); 
					 
					ContentValues values = new ContentValues(); 
					values.put("name", "Game of Thrones"); 
					values.put("author", "George Martin"); 
					values.put("pages", "720"); 
					values.put("price", 20.85); 
					db.insert("Book", null, values); 
					db.setTransactionSuccessful(); 
				} catch (Exception e) { 
					e.printStackTrace(); 
				} finally { 
					db.endTransaction(); 
				} 
			} 
		}); 
	} 
 
	@Override 
	public boolean onCreateOptionsMenu(Menu menu) { 
		// Inflate the menu; this adds items to the action bar if it is present. 
		getMenuInflater().inflate(R.menu.main, menu); 
		return true; 
	} 
 
	@Override 
	public boolean onOptionsItemSelected(MenuItem item) { 
		// Handle action bar item clicks here. The action bar will 
		// automatically handle clicks on the Home/Up button, so long 
		// as you specify a parent activity in AndroidManifest.xml. 
		int id = item.getItemId(); 
		if (id == R.id.action_settings) { 
			return true; 
		} 
		return super.onOptionsItemSelected(item); 
	} 
} 

这其中也包含了事物的使用。比较具体。

Demo下载:http://download.csdn.net/detail/xdwyyan/8077323

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/3267.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论