Android Studio SQLlite学习
- 一、了解SQLite
- 二、单独安装(两种方法)
- 三、新建/查看/删除表
- 四、增删查改操作
- 五、Android Studio内置SQLite
一、了解SQLite
SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
SQLite并没有包含大型客户/服务器数据库(如Oracle、SQL Server)的所有特性,但它包含了操作本地数据的所有功能,简单易用、反应快。SQLite内部只支持 NULL、INTEGER、REAL(浮点数)、TEXT(字符串文本)和BLOB(二进制对象)这五种数据类型,但实际上SQLite也接受varchar(n)、char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转成上面对应的数据类型。
Android内置SQLite,不需要安装和配置即可使用
二、单独安装(两种方法)
1、方法一:永久创建数据库,附加数据库和分离数据库
(1)下载并解压文件
(2)新建文件夹将解压后的文件放在同一个文件夹中/SQLite
(3)进入/SQLite
目录下,输入sqlite3
2、方法二:不需要设置路径,但数据是暂时的,关闭电脑将失去操作过的所有数据记录。这种方法不能创建、附加或分离数据
下载SQlite预编译的二进制zip文件:sqlite-tools-win32-x86-3170000.zip
。解压到目录:/sqlite
。直接双击运行sqlite3.exe
应用程序。
三、新建/查看/删除表
1、新建和查看(句尾要用;)
2、删除和查看
四、增删查改操作
1、建表
2、insert into
(1)写法一
(2)写法二
3、select from(1)写法一
(2)写法二
3、update where
4、delete from
五、Android Studio内置SQLite
1、Android Studio内置SQLite,不用重新下载。直接在包的目录下使用,在命令行输入sqlite3。
2、xml和java文件
2.1、xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库"
android:onClick="testCreateTB"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="新增记录"
android:onClick="testInsert"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新记录"
android:onClick="testUpdate"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除记录"
android:onClick="testDelete"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询记录"
android:onClick="testQuery"/>
</LinearLayout>
页面:
2.2、java(Activity):
(1)DB_Helper
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
//第一次创建数据库的时候回调该方法
//当使用getReadableDatabase()方法获取数据库实例的时候, 如果数据库不存在, 就会调用这个方法;
//作用:创建数据库表:将创建数据库表的 execSQL()方法 和 初始化表数据的一些 insert()方法写在里面;
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//SQLite数据创建支持的数据类型: 整型数据,字符串类型,日期类型,二进制的数据类型
//创建了一个名为person的表
String sql = "CREATE table employee(" +
"_id integer primary key autoincrement," +
"name varchar)";
db.execSQL(sql);
//数据库实际上是没有被创建或者打开的,直到testCreateTB()方法中的一个被调用时才会进行创建或者打开
System.out.println("数据库初始化成功");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
(2)SQLiteActivity
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class SQLiteActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite);
}
// 创建DatabaseHelper对象
// 只执行这句话是不会创建或打开连接的
// 调用getReadableDatabase()或getWritableDatabase()才算真正创建或打开数据库
public void testCreateTB(View view){
new DBHelper(SQLiteActivity.this,"mydb2022",null,1).getReadableDatabase();
}
public void testInsert(View view){
DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
SQLiteDatabase database = dbHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("name","jim");
Long id = database.insert("employee",null,values);
if(id>0)
Toast.makeText(SQLiteActivity.this,"新增成功",Toast.LENGTH_SHORT).show();
else
Toast.makeText(SQLiteActivity.this,"新增失败",Toast.LENGTH_SHORT).show();
}
public void testUpdate(View view){
DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
SQLiteDatabase database = dbHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("name","rose");
int rows = database.update("employee",values,"_id = ?",new String[]{"3"});
if(rows>0)
Toast.makeText(SQLiteActivity.this,"修改成功",Toast.LENGTH_SHORT).show();
else
Toast.makeText(SQLiteActivity.this,"修改失败",Toast.LENGTH_SHORT).show();
}
public void testDelete(View view){
DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
SQLiteDatabase database = dbHelper.getReadableDatabase();
int rows = database.delete("employee","_id = ?",new String[]{"2"});
if(rows>0)
Toast.makeText(SQLiteActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
else
Toast.makeText(SQLiteActivity.this,"删除失败",Toast.LENGTH_SHORT).show();
}
public void testQuery(View view){
DBHelper dbHelper = new DBHelper(SQLiteActivity.this,"mydb2022",null,1);
SQLiteDatabase database = dbHelper.getReadableDatabase();
Cursor cursor = database.query("employee",null,null,null,null,null,null,null);
while(cursor.moveToNext()){
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(SQLiteActivity.this,"id:"+_id+",name:"+name,Toast.LENGTH_SHORT).show();
}
}
}
2.3、测试运行