1、public void onOpen(SQLiteDatabase db) super.onOpen(db);/ TODO 每次成功打开数据库后首先被执行Main.javaimport java.util.Random;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.SQLException;import android.os.Bundle;import android.view.View;import
2、android.widget.Button;import android.widget.TextView;public class Main extends Activity private DatabaseHelper dbHelper;private static final String DATABASE_NAME = db.db;private static final int DATABASE_VERSION = 1;private static final String TABLE_NAME = employeeTextView txtMsg;/* Called when the
3、activity is first created. */public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);dbHelper = new DatabaseHelper(this, DATABASE_NAME, null,DATABASE_VERSION);txtMsg = (TextView) this.findViewById(R.id.txtMsg);Button btn1 = (Button) this.findV
4、iewById(R.id.btn1);btn1.setText(创建表);btn1.setOnClickListener(new Button.OnClickListener() public void onClick(View v) CreateTable(););Button btn2 = (Button) this.findViewById(R.id.btn2);btn2.setText(插入 3 条记录btn2.setOnClickListener(new Button.OnClickListener() insertItem();Button btn3 = (Button) this
5、.findViewById(R.id.btn3);btn3.setText(删除全部记录btn3.setOnClickListener(new Button.OnClickListener() deleteItem();Button btn4 = (Button) this.findViewById(R.id.btn4);btn4.setText(更新指定数据btn4.setOnClickListener(new Button.OnClickListener() updateItem();Button btn5 = (Button) this.findViewById(R.id.btn5);b
6、tn5.setText(显示全部数据btn5.setOnClickListener(new Button.OnClickListener() showItems();Button btn6 = (Button) this.findViewById(R.id.btn6);btn6.setText(删除表btn6.setOnClickListener(new Button.OnClickListener() dropTable();/ 创建数据表private void CreateTable() SQLiteDatabase db = dbHelper.getWritableDatabase()
7、;String sql = CREATE TABLE IF NOT EXISTS + TABLE_NAME+ (ID INTEGER PRIMARY KEY, Name VARCHAR, Age INTEGER);try db._execSQL(sql);txtMsg.append(数据表成功创建n catch (SQLException ex) 数据表创建错误n + ex.toString() + n/ 插入数据private void insertItem() Random random = new Random();for (int i = 0; i 3; i+) insert into
8、 (name, age) values (name + String.valueOf(i), + random.nextInt() + )/ _execSQL() - 执行指定的 sql成功插入 3 条数据n插入数据失败n/ 删除数据private void deleteItem() db.delete(TABLE_NAME, id 999999, null);成功删除数据n catch (SQLException e) 删除数据失败n/ 更新数据private void updateItem() ContentValues values = new ContentValues();value
9、s.put(批量更新后的名字db.update(TABLE_NAME, values, id?, new String 3 );成功更新数据n更新数据失败n/ 查询数据private void showItems() SQLiteDatabase db = dbHelper.getReadableDatabase();String column = idage ;Cursor cursor = db.query(TABLE_NAME, column, null, null, null,null, null);Integer num = cursor.getCount();共 + Integer
10、.toString(num) + 条记录ncursor.moveToFirst();while (cursor.getPosition() != cursor.getCount() txtMsg.append(Integer.toString(cursor.getPosition() + ,+ String.valueOf(cursor.getString(0) + + cursor.getString(1) + + String.valueOf(cursor.getString(2) + cursor.moveToNext();读取数据失败n/ 删除数据表private void dropT
11、able() DROP TABLE IF EXISTS + TABLE_NAME;数据表删除成功n数据表删除错误n2、ContentProvider 的 DemoMyUser.javapackage com.webabcd.contentprovider;import .Uri;import android.provider.BaseColumns;/ 自定义 ContentProvider 所需的实体类public class MyUser / 必须要有 _id 字段。本例中 BaseColumn 类中已经包含了 _id 字段public static final class User im
12、plements BaseColumns / 定义 CONTENT_URIpublic static final Uri CONTENT_URI = Uri.parse(content:/com.webabcd.MyContentProvider/ 表数据列public static final String USER_NAME = USER_NAMEMyContentProvider.javaimport java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import org.apache.
13、http.util.EncodingUtils;import android.content.ContentProvider;import android.content.ContentUris;import android.database.MatrixCursor;/ 继承 ContentProvider 以实现自定义的 ContentProvider(基于文件的信息存储)public class MyContentProvider extends ContentProvider private File file;private FileOutputStream out;private
14、FileInputStream in;/ ContentProvider 的删除数据接口public int delete(Uri uri, String selection, String selectionArgs) / TODO Auto-generated method stubreturn 0;public String getType(Uri uri) return null;/ ContentProvider 的插入数据接口 public Uri insert(Uri uri, ContentValues values) out = new FileOutputStream(fi
15、le);out.write(values.getAsString(MyUser.User.USER_NAME).getBytes();out.close();int rowId = 0;Uri rowUri = ContentUris.appendId(MyUser.User.CONTENT_URI.buildUpon(), rowId).build();getContext().getContentResolver().notifyChange(rowUri, null);return rowUri; catch (Exception e) / 创建用于保存信息的文件public boole
16、an onCreate() / 每个包中应用程序的私有目录为:/data/data/包名/ SD 卡目录为:/sdcardfile = new File(/data/data/com.webabcd.contentprovider/,demo.txtif (!file.exists()file.createNewFile();return true; catch (Exception ex) return false;/ ContentProvider 的查询数据接口public Cursor query(Uri uri, String projection, String selection
17、,String selectionArgs, String sortOrder) String content;in = new FileInputStream(file);int length = (int) file.length();byte buffer = new bytelength;in.read(buffer, 0, length);content = EncodingUtils.getString(buffer, UTF-8in.close();String columns = new String MyUser.User._ID, MyUser.User.USER_NAME
18、 ;MatrixCursor cur = new MatrixCursor(columns);String values = new String 0, content ;cur.moveToFirst();cur.addRow(values);return cur;/ ContentProvider 的更新数据接口public int update(Uri uri, ContentValues values, String selection,String selectionArgs) import android.provider.Contacts;import android.provi
19、der.Contacts.People;import android.util.Log;import android.widget.Toast;/* 几个常用的系统内置的 ContentProvider 如下: * content:/media/internal/images 这个URI将返回设备上存储的所有图片/contacts/people/ 这个URI将返回设备上的所有联系人信息/contacts/people/45 这个URI返回单个结果(联系人信息中ID为45的联系人记录)*/新增联系人记录insertRecords( + String.valueOf(random.nextInt(), String.valueOf(random.nextInt();查看联系人记录displayRecords();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1