package com.example.jishanzu.jishan; import android.content.ContentValues; import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Demo13Activity extends FragmentActivity { private Button createDb,addData,selData,updData,delData,delTable; private SQLiteDatabase db; private boolean createDb(Context context){ boolean flag=false; if (null == db){ db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null); } StringBuilder createTable = new StringBuilder(); createTable.append("CREATE TABLE product"); createTable.append("("); createTable.append("p_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT"); createTable.append(",p_name TEXT NULL"); createTable.append(",p_price DOUBLE NULL"); createTable.append(")"); try { Log.i("sql:",createTable.toString()); db.execSQL(createTable.toString()); flag=true; }catch (SQLException ex){ Log.e("创建表失败!",ex.getMessage()); } return flag; } private boolean addData(Context context){ if (null == db){ db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null); } //构造ContentValues,用于存放数据 ContentValues cv1 = new ContentValues(); cv1.put("p_name","测试名称1"); cv1.put("p_price",11.11); ContentValues cv2 = new ContentValues(); cv2.put("p_name","测试名称2"); cv2.put("p_price",22.22); //添加一个不存在的字段,是会报错的,报xxx no column named xxxx //cv2.put("p_age",22); try { //添加操作 long row1 = db.insert("product",null,cv1); long row2 = db.insert("product",null,cv2); //判断是否添加成功 if (row1>0 && row2>0) return true; }catch (SQLException ex){ } return false; } //第二种添加方式,直接sql方式 private boolean addData2(Context context){ if (null == db){ db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null); } String sql="INSERT INTO product(p_name,p_price)VALUES(?,?)"; //构造数据数组 Object[] data1 = new Object[]{"测试名称111",111.111}; Object[] data2 = new Object[]{"测试名称222",222.222}; //调用execSQL,执行sql并传入占位符数据 try { db.execSQL(sql,data1); db.execSQL(sql,data2); return true; }catch (SQLException ex){ } return false; } //查询操作 private Cursor selData(Context context){ if (null == db){ db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null); } //游标对象 Cursor cursor =null; //查询参数 String table="product"; //参数要求是数组columns String[] columns=new String[]{"p_id","p_name","p_id"}; //占位符形式 String selection="p_price>?"; String[] selectionArgs=new String[]{"22"}; //执行查询返回游标对象,注意query方法有很多参数,此处记不住可以参考文档或源码 cursor=db.query(table,columns,selection,selectionArgs,null,null,null); return cursor; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.demo13); createDb = (Button)findViewById(R.id.create_db); addData = (Button)findViewById(R.id.add_data); selData = (Button)findViewById(R.id.sel_data); updData = (Button)findViewById(R.id.upd_data); delData = (Button)findViewById(R.id.del_data); delTable = (Button)findViewById(R.id.del_table); //TODO:给每个按钮添加事件 createDb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (createDb(getApplicationContext())){ Toast.makeText(getApplicationContext(),"建库建表成功!",Toast.LENGTH_LONG).show(); } } }); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (addData(getApplicationContext())){ Toast.makeText(getApplicationContext(),"添加成功",Toast.LENGTH_LONG).show(); } if (addData2(getApplicationContext())){ Toast.makeText(getApplicationContext(),"第二种方式添加成功",Toast.LENGTH_LONG).show(); } } }); selData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Cursor cursor=selData(getApplicationContext()); if (null!=cursor){ //一行行提取数据 while (cursor.moveToNext()){ Integer pId=cursor.getInt(0); String pName =cursor.getString(1); Double pPrice =cursor.getDouble(2); Log.i("查询操作:",pId+","+pName+"+"+pPrice); } //别忘了关闭游标 cursor.close(); } } }); } @Override protected void onDestroy(){ super.onDestroy(); if (null != db && db.isOpen()){ db.close(); } } }
Android studio
于 2023-08-07 15:37:24 首次发布