代码改变世界

SQL

2017-07-14 14:53  烈'焰  阅读(166)  评论(0编辑  收藏  举报

安卓为了更好的管理数据库,它向我们提供了一个SQLiteOpenHelp帮助类,SQLiteOpenHelp它是一个抽象类,如果要使用它就要写一个类继承它,其中有两个方法,onCreate()和onUpgrade()方法,一个是实现创建,另一个实现升级数据库。SQLiteOpenHelp中有两个非常重要的实例方法,getReadableDatabase()和getWritableDatabase(),这两个方法都可以创建和打开数据库

1.创建数据库,首先创建一个类继承SQLiteOpenHelp

2.以字符串形式写出创建表的语句

3.在onCreate()方法中执行db.execSQL(创建的字符串)方法来执行创建表的语句

4.注意:如果你创建了一个表在添加表进行创建时候,将无法进行创建,这时候我们怎么办??

我们在创建的类中还有一个方法没有用到,那就是数据库更新方法,我们可以在里面执行删除语句,如果创建了一个表我们在创建的时候删除原来的表。

db.execSQL("drop table if exists +创建的表名")

5.我们定义好了可是怎么执行呢??

这个简单只要在MainActivity中将我们定义的参数1改为2就ok了。

public class MyDatabaseHelper extends SQLiteOpenHelper {
    public static final String CREAT_BOOK = "create table Book( auther text," +
            "price real ," +
            "pages integer," +
            "name text)";
    public static final String CREAT_CATEGORY = "create table Category(id integer primary key autoincrement," +
            "category_name text," +
            "category_code integer)";
    private Context mContext;

    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREAT_BOOK);
        db.execSQL(CREAT_CATEGORY);
        Toast.makeText(mContext,"成功",Toast.LENGTH_SHORT).show();

    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        //如果有重名的数据库就删除
        db.execSQL("drop table if exists Book");
        db.execSQL("drop table if exists Category");
        onCreate(db);
    }

 

public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelpe;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       Button seave= (Button) findViewById(R.id.seave);
    
        dbHelpe = new MyDatabaseHelper(this,"BookStore.db",null,2);
        seave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建数据库
                dbHelpe.getWritableDatabase();
            }
        });

 通过上面的代码我们创建好了数据库,下面我们向数据库中插入数据

1.通过我们创建的MyDatabaseHelper类调用getReadableDatabase()用来读取

2.创建ContentValuer对象,然后用此对象调用put()添加对象

  add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelpe.getReadableDatabase();
                ContentValues values = new ContentValues();
                values.put("auther", "haha");
                values.put("price", 19.9);
                values.put("pages", 90);
                values.put("name", "Tom");
                db.insert("Book", null, values);
                values.clear();

                values.put("auther", "hehe");
                values.put("price", 30.7);
                values.put("pages", 20);
                values.put("name", "LiSi");
                db.insert("Book", null, values);
                Toast.makeText(getApplicationContext(), "Succes", Toast.LENGTH_SHORT).show();
            }
        });

 2.更新数据

1.通过我们创建的MyDatabaseHelper类调用getReadableDatabase()用来读取

2.数据重组

3.最后调用updata()里面4个参数第一个为表名,二,ContentValuer对象,3是需要修改的条件,4,建立一个数组给要改的条件值

  Button update = (Button) findViewById(R.id.update);
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelpe.getReadableDatabase();
                ContentValues values = new ContentValues();//重新组装
                values.put("auther", "aaaa");
                db.update("Book", values, "name = ?", new String[]{"LiSi"});
            }
        });

 3.查看数据库内容

  Button find = (Button) findViewById(R.id.find);
        find.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelpe.getReadableDatabase();
                //查询表中内容
                Cursor cursor = db.query("Book", null, null, null, null, null, null);
                if (cursor.moveToFirst()) {//判断指针是否在一行的开头
                    do {
                //根据键值获取值 String name = cursor.getString(cursor.getColumnIndex("name")); String auther = cursor.getString(cursor.getColumnIndex("auther")); int pages = cursor.getInt(cursor.getColumnIndex("pages")); Float price = cursor.getFloat(cursor.getColumnIndex("price")); Log.d("aaa", name); Log.d("aaa", auther); Log.d("aaa", String.valueOf(pages)); Log.d("aaa", String.valueOf(price)); } while (cursor.moveToNext());//向下一行移动 } cursor.close(); } });