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文件