数据库:sql语句增删改查

1.数据库的管理类


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper {
/**
 * context:上下文
 * name:数据库名字
 * factory:目的是创建游标(游动光标)对象,默认用null
 * version:数据库版本,从1开始递增,不能减
 * */
    public MyOpenHelper(Context context) {
        super(context, "i01.db", null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {//数据库第一次创建的时候调用
        /**适合初始化表结构,用sql语句创建表
         * 示例:创建一个两列的表,第一列为id,第二列为name
         * id 一般以下划线开头“_id”
         * interger 是数据类型
         * primary key 指定id为主键
         * autoincrement 自增长
         * varchar(20) name不超过20个字符
         * 注意:sqlite底层都将类型转化为string类型,但为了严谨,这里还是指定类型
         */
//      db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20))");
        //初始化一个三列的表
        db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20),phone  varchar(20))");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//当数据库版本升级时调用
        /**适合更新表结构
         * 示例:给表增加一列phone
         * varchar(20) phone 不超过20个字符
         * */
        db.execSQL("alter table info add phone varchar(20)");
        
        System.out.println("新版本数据库:"+newVersion+"旧版本:"+oldVersion);
        
    }
}

2.增删改查操作

public class MainActivity extends Activity {

    private MyOpenHelper myOpenHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        myOpenHelper = new MyOpenHelper(getApplicationContext());
//      //打开一个数据库(如果不存在就创建)
//      SQLiteDatabase writableDatabase = myOpenHelper.getWritableDatabase();
//      //打开一个数据库(如果不存在就创建),跟上面的区别是,如果磁盘满了,返回一个只读的数据库
////        SQLiteDatabase readableDatabase = myOpenHelper.getReadableDatabase();
    }
    public void click1(View v) {//点击按钮增加一条记录
        //获取数据库对象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //执行增加一条的sql语句
        db.execSQL("insert into info(name,phone) values(?,?)",new Object[]{"张三","13111112222"});
        //数据库用完需要关闭
        db.close();
    }
    public void click2(View v) {//删除一条记录
        //获取数据库对象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //执行删除一条的sql语句
        db.execSQL("delete from info where name=?",new Object[]{"张三"});
        //数据库用完需要关闭
        db.close();
    }
    public void click3(View v) {//修改一条记录
        //获取数据库对象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //执行修改一条的sql语句
        db.execSQL("update info set phone=? where name=?",new Object[]{"1871111","张三"});
        //数据库用完需要关闭
        db.close();
    }
    public void click4(View v) {//查询一条记录
        //获取数据库对象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //执行查询一条的sql语句(返回的是一个结果集,后面是占位符)
        Cursor cursor = db.rawQuery("select * from info", null);//查询所有数据
        if (cursor!=null && cursor.getCount()>0) {//查询结果不为空,且个数大于0
            while (cursor.moveToNext()) {//循环,每次都取下一个,取不到则结束
                //取值,参数为列的索引,从0开始
                String name = cursor.getString(1);
                String phone = cursor.getString(2);
                System.out.println("name:"+name+"  phone:"+phone);
            }
        }
        //数据库用完需要关闭
        db.close(); 
    }
}

你可能感兴趣的:(数据库:sql语句增删改查)