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.execSQLStringsql)方法,但不能执行查询语句。

4每一次操作应是一个单独的Contenvalues对象。

5合理的使用getWritableDatabase()和getReadableDatabase()方法。节约开销。

6其实版本号根本不会有影响,比如版本号变成了2,在查询中版本号唯一是不会有影响的。

7sqlite中,行是完全可以重复的,比如不断点击insert键,插入的行是完全相同的,但我们在查询时,

并不影响,他会把所有的行全部显示出来。数据库不允许重复:多次按下create键不会起任何作用。

8.程序退出后数据照样在那里!除非你选择清除数据。



更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. Python技巧匿名函数、回调函数和高阶函数
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android系统配置数据库注释(settings.db)
  5. android中文api(89)——ViewManager
  6. Android调用天气预报的WebService简单例子
  7. Android(安卓)Activity的启动
  8. MTK Android(安卓)Driver:led
  9. 样式 主题 对话框 国际化

随机推荐

  1. 解读2015之Android篇:横向扩张、平稳发展
  2. 浅谈Android文件管理器的几种实现方式(原
  3. android 蓝牙开发
  4. Android(安卓)wifi驱动的移植 realtek 81
  5. Android(安卓)IO流使用详解-SDcard
  6. android(基于回调)的事件处理
  7. Android工程师成长路线全攻略
  8. Android(安卓)调用系统相机以及相册源码
  9. cocos2d-x C++通知Android更新UI
  10. 一个Android开发者自学Python的心路历程