zoukankan      html  css  js  c++  java
  • SQL

    安卓为了更好的管理数据库,它向我们提供了一个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(); } });
  • 相关阅读:
    2020重新出发,NOSQL,MongoDB分布式集群架构
    2020重新出发,NOSQL,MongoDB的操作和索引
    2020重新出发,NOSQL,MongoDB是什么?
    2020重新出发,NOSQL,redis高并发系统的分析和设计
    2020重新出发,NOSQL,redis互联网架构分析
    2020重新出发,NOSQL,Redis和数据库结合
    2020重新出发,NOSQL,Redis主从复制
    collections模块
    常用模块
    python面向对象的内置函数和反射
  • 原文地址:https://www.cnblogs.com/lyl123/p/7170302.html
Copyright © 2011-2022 走看看