Android Sqlite数据库编程示例

SQLite简介:
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库系统来讲,它的处理速度比他们都快。

安卓例程:

MySQLiteOpenHelper.java文件

package kyle.me.sqlite3;

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

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    //数据库版本号
    private static Integer Version = 1;

    private Context mContext;

    //在SQLiteOpenHelper的子类当中,必须有该构造函数
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                              int version) {
        //必须通过super调用父类当中的构造函数
        super(context, name, factory, version);
        mContext = context;
    }
    //参数说明
    //context:上下文对象
    //name:数据库名称
    //param:factory
    //version:当前数据库的版本,值必须是整数并且是递增的状态

    public MySQLiteOpenHelper(Context context,String name,int version)
    {
        this(context,name,null,version);
    }

    public MySQLiteOpenHelper(Context context,String name)
    {
        this(context, name, Version);
    }

    //当数据库创建的时候被调用
    @Override
    public void onCreate(SQLiteDatabase db) {

        System.out.println("创建数据库和表");
        //创建了数据库并创建一个叫records的表
        //SQLite数据创建支持的数据类型: 整型数据,字符串类型,日期类型,二进制的数据类型
        String sql = "create table user(id int primary key,name varchar(200))";
        //execSQL用于执行SQL语句
        //完成数据库的创建
        db.execSQL(sql);
        //数据库实际上是没有被创建或者打开的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一个被调用时才会进行创建或者打开

        Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show();
    }

    //数据库升级时调用
    //如果DATABASE_VERSION值被改为2,系统发现现有数据库版本不同,即会调用onUpgrade()方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Toast.makeText(mContext, "Upgrade succeeded", Toast.LENGTH_SHORT).show();
    }
}

MainActivity.java文件

package kyle.me.sqlite3;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button instablish;
    private Button insert;
    private Button upgrade;
    private Button modify;
    private Button delete;
    private Button query;
    private Button delete_database;

    private MySQLiteOpenHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //绑定按钮
        instablish = (Button) findViewById(R.id.instablish);
        insert = (Button) findViewById(R.id.insert);
        upgrade = (Button) findViewById(R.id.upgrade);
        modify = (Button) findViewById(R.id.modify);
        delete = (Button) findViewById(R.id.delete);
        query = (Button) findViewById(R.id.query);
        delete_database = (Button) findViewById(R.id.delete_database);

        //设置监听器
        instablish.setOnClickListener(this);
        insert.setOnClickListener(this);
        upgrade.setOnClickListener(this);
        modify.setOnClickListener(this);
        delete.setOnClickListener(this);
        query.setOnClickListener(this);
        delete_database.setOnClickListener(this);

    }

    //设置每个按钮对数据库的操作进行控制
    @Override
    public void onClick(View v) {
        switch (v.getId()) {

            //点击创建数据库库
            case R.id.instablish:

                System.out.println("创建数据库");

                // 创建SQLiteOpenHelper子类对象
                dbHelper = new MySQLiteOpenHelper(this,"test_carson1.db", null, 1);
                //数据库实际上是没有被创建或者打开的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一个被调用时才会进行创建或者打开
                dbHelper.getWritableDatabase();
                // SQLiteDatabase  sqliteDatabase = dbHelper.getReadbleDatabase();

                break;

            //点击更新数据
            case R.id.upgrade:

                System.out.println("更新数据库");

                // 创建SQLiteOpenHelper子类对象
                dbHelper = new MySQLiteOpenHelper(this,"test_carson1.db", null, 2);
                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                dbHelper.getWritableDatabase();
                // SQLiteDatabase  sqliteDatabase = dbHelper.getReadbleDatabase();

/*                dbHelper = new MySQLiteOpenHelper(this, "test_carson", null, 2);
                dbHelper.getWritableDatabase();*/

                break;

            //点击插入数据到数据库
            case R.id.insert:

                System.out.println("插入数据");

                // 创建SQLiteOpenHelper子类对象
                注意,一定要传入最新的数据库版本号
                dbHelper = new MySQLiteOpenHelper(this,"test_carson1.db", null,2);
                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                dbHelper.getWritableDatabase();

                // 创建ContentValues对象
                ContentValues values1 = new ContentValues();

                // 向该对象中插入键值对
                values1.put("id", 1);
                values1.put("name", "carson");

                SQLiteDatabase db = dbHelper.getWritableDatabase();

                // 调用insert()方法将数据插入到数据库当中
                db.insert("user", null, values1);

                // sqliteDatabase.execSQL("insert into user (id,name) values (1,'carson')");

                //关闭数据库
                db.close();

                break;

            //点击查询数据库
            case R.id.query:

                System.out.println("查询数据");

                // 创建DatabaseHelper对象
                dbHelper = new MySQLiteOpenHelper(this,"test_carson1.db",null,2);

                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase db1 = dbHelper.getReadableDatabase();

                // 调用SQLiteDatabase对象的query方法进行查询
                // 返回一个Cursor对象:由数据库查询返回的结果集对象
                Cursor cursor = db1.query("user", new String[] { "id", "name" }, "id=?", new String[] { "1" }, null,null, null, null);

                String id = null;
                String name = null;

                //将光标移动到下一行,从而判断该结果集是否还有下一条数据
                //如果有则返回true,没有则返回false
                while (cursor.moveToNext()) {
                    id = cursor.getString(cursor.getColumnIndex("id"));
                    name = cursor.getString(cursor.getColumnIndex("name"));
                    //输出查询结果
                    System.out.println("查询到的数据是:"+"id: "+id+"  "+"name: "+name);

                }
                //关闭数据库
                db1.close();


                break;

            //点击修改数据
            case R.id.modify:
                System.out.println("修改数据");

                // 创建一个DatabaseHelper对象
                // 将数据库的版本升级为2
                // 传入版本号为2,大于旧版本(1),所以会调用onUpgrade()升级数据库
                dbHelper = new MySQLiteOpenHelper(this,"test_carson1.db", 2);

                // 调用getWritableDatabase()得到一个可写的SQLiteDatabase对象
                SQLiteDatabase db2 = dbHelper.getWritableDatabase();

                // 创建一个ContentValues对象
                ContentValues values2 = new ContentValues();
                values2.put("name", "zhangsan");

                // 调用update方法修改数据库
                db2.update("user", values2, "id=?", new String[]{"1"});

                //关闭数据库
                db2.close();
                break;

            //点击删除数据
            case R.id.delete:

                System.out.println("删除数据");

                // 创建DatabaseHelper对象
                dbHelper = new MySQLiteOpenHelper(this,"test_carson1.db",2);

                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase db3 = dbHelper.getWritableDatabase();

                //删除数据
                db3.delete("user", "id=?", new String[]{"1"});

                //关闭数据库
                db3.close();
                break;

            //点击删除数据库
            case R.id.delete_database:

                System.out.println("删除数据库");

                dbHelper = new MySQLiteOpenHelper(this, "test_carson1.db",2);

                // 调用getReadableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase db4 = dbHelper.getReadableDatabase();

                //删除名为test.db数据库
                deleteDatabase("test_carson.db");
                break;

            default:
                break;
        }
    }
}

activity_main.xml文件




    

你可能感兴趣的:(安卓)