android与数据库
16lz
2022-07-25
public class SqliteHelper extends SQLiteOpenHelper {//String name 这个参数是表示数据库的名字public SqliteHelper(Context context, String name) {super(context, name,null, 1);}@Overridepublic void onCreate(SQLiteDatabase arg0) {/*当数据库创建时,onCreate方法只会被调用一次。当我们重新安装这个程序时,不卸载数据,同样只会创建一次。,在这里面我们一般新建一个表*/ System.out.println("create a database");arg0.execSQL("create table user(id int,name varchar(20))");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {/* * 这个函数用来更新数据库的版本,其实用到得比较少。 */}}public class MainActivity extends Activity {private Button createBtn,insertBtn,updateBtn,queryBtn;private String table="user";private String whereClause="id=?";private String[] whereArgs=new String[]{"1"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); createBtn=(Button)findViewById(R.id.createbtn); insertBtn=(Button)findViewById(R.id.insertbtn); updateBtn=(Button)findViewById(R.id.updatebtn); queryBtn=(Button)findViewById(R.id.querybtn); createBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {SqliteHelper sqliteHelper=new SqliteHelper(MainActivity.this, "test_db");SQLiteDatabase db=sqliteHelper.getWritableDatabase();}});上述是创建一个数据库,可以看出,使用助手类的作用是比较方便的返回数据库的实例。 insertBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {SqliteHelper sqliteHelper=new SqliteHelper(MainActivity.this, "test_db");SQLiteDatabase db=sqliteHelper.getWritableDatabase();ContentValues values=new ContentValues();values.put("id", 1);values.put("name","xujian");db.insert("user", null, values);System.out.println("insert a data is sucess!");}}); 注意看test_db,助手类正是通过这种不同数据库的名字来区分的。 updateBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {SqliteHelper sqliteHelper=new SqliteHelper(MainActivity.this, "test_db");SQLiteDatabase db=sqliteHelper.getWritableDatabase();ContentValues values=new ContentValues();values.put("name","xujianxing");//最后面的两个参数构成了一个完整的where字句。//但是,我们们需要注意这样一个问题:可以直接whereClause变成”id=1”.后面那个参数传成空。// whereClause="id=?"与 String[] whereArgs=new String[]{"1"},但有时候我们可能需要的条件不止一个,这个时候需要and来连接:”id=?and name=?”.db.update(table, values, whereClause, whereArgs);System.out.println("update a data is sucess!");}}); queryBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {SqliteHelper sqliteHelper=new SqliteHelper(MainActivity.this, "test_db");SQLiteDatabase db=sqliteHelper.getWritableDatabase();////第二个参数是要查询的列名//第三四个参数加起来相当于一个where字句。具体的就是与id=?new String[]{"1"}相当于where id=1,如果为空的话,就表示全查了。注意仍然需要占位符。关于这些参数,看文档还是比较好理解的。Cursor cursor=db.query(table, new String[]{"id","name"}, null, null, null, null, null);while(cursor.moveToNext()){String name=cursor.getString(cursor.getColumnIndex("id"));System.out.println(name);}System.out.println("query a data is sucess!");}}); }}
1.在sqlite中,如果不声明主键的话,可以存在两条或者多条一模一样的元组。
2.我们为每一次操作都声明了一个助手类,也可以只声明一个助手类。
3.事实上,sql语句是可以直接执行的,使用db.execSQL(Stringsql)方法,但不能执行查询语句。
4每一次操作应是一个单独的Contenvalues对象。
5合理的使用getWritableDatabase()和getReadableDatabase()方法。节约开销。
6其实版本号根本不会有影响,比如版本号变成了2,在查询中版本号唯一是不会有影响的。
7在sqlite中,行是完全可以重复的,比如不断点击insert键,插入的行是完全相同的,但我们在查询时,
并不影响,他会把所有的行全部显示出来。数据库不允许重复:多次按下create键不会起任何作用。
8.程序退出后数据照样在那里!除非你选择清除数据。
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- Python技巧匿名函数、回调函数和高阶函数
- python list.sort()根据多个关键字排序的方法实现
- Android系统配置数据库注释(settings.db)
- android中文api(89)——ViewManager
- Android调用天气预报的WebService简单例子
- Android(安卓)Activity的启动
- MTK Android(安卓)Driver:led
- 样式 主题 对话框 国际化