方法:

一、直接利用database.execSQL()方法输入完整sql语句进行操作

  这种方法适用于复杂的sql语句,比如多表查询等等

  这里适合于增删改,这个方法没有返回值,而查需要返回数据,故不适用

  增实例:

    database.execSQL("insert into student (name,age) values ('小李',45)");

  查的话用database.rawQuery()方法,也是我们直接输入完整的sql语句

  查实例:

    Cursor cursor = database.rawQuery("select id,name,age from student where name=?",new String[] { "小李" });

 

二、利用系统直接封装好的API,原理是系统内部把参数拼成sql语句

  适用于简单sql语句

  增: 返回操作的行

    long row=database.insert("student", null, values);

  删: 返回受影响的行数

    int n = database.delete("student", "name=? and age=?", new String[] {"饭饭", "20" });

  改: 返回受影响的行数

    int n = database.update("student", values, "name=?",new String[] { "饭饭" });

  查: 返回数据表游标 (注意查不是select)

    Cursor cursor = database.rawQuery("select id,name,age from student where name=?",new String[] { "小李" });

 

三、其它

1、数据库的连接有限,所以创建连接用完要关闭

2、将我们需要操作的数据写入ContentValues

3、查数据时,游标通过cursor.moveToNext()方法来确定下一行是否有值,有值就读取下一行的值

4、得到列的索引有两种方法:

  通过查找列字段对应的位置得到

    int id = cursor.getInt(cursor.getColumnIndex("id"));

  直接通过列号得到

    String name = cursor.getString(1);

 

代码:

com.fry.database.MySQLiteOpenHelper

 1 package com.fry.database;
 2 
 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 import android.database.sqlite.SQLiteDatabase.CursorFactory;
 6 import android.database.sqlite.SQLiteOpenHelper;
 7 import android.util.Log;
 8 
 9 public class MySQLiteOpenHelper extends SQLiteOpenHelper{
10 
11     /*
12      * 1、context 上下文
13      * 2、那么数据库名称
14      * 3、factory
15      * 4、version 数据库文件的版本
16      */
17 
18     public MySQLiteOpenHelper(Context context,int version) {
19         super(context, "fanfan3.db", null, version);
20         // TODO Auto-generated constructor stub
21     }
22 
23     /* 数据库文件创建成功后调用
24      * (non-Javadoc)
25      * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
26      */
27     @Override
28     public void onCreate(SQLiteDatabase db) {
29         Log.d("fanfan", "onCreate");
30         db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,age INTEGER)");
31     }
32 
33     /* 数据库文件更新后调用 
34      * (non-Javadoc)
35      * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
36      */
37     @Override
38     public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
39         Log.d("fanfan", "onUpgrade");
40     }
41 
42 }
数据库类

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-17
猜你喜欢
  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案