SQLite数据库 基本增,删,改,查

布局:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:app="http://schemas.android.com/apk/res-auto"
 5     xmlns:tools="http://schemas.android.com/tools"
 6     android:layout_width="match_parent"
 7     android:layout_height="match_parent"
 8     android:orientation="vertical"
 9     tools:context="net.bwie.localdata.MainActivity">
10 
11     <Button
12         android:id="@+id/insert_btn"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="插入"/>
16 
17     <Button
18         android:id="@+id/delete_btn"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:text="删除"/>
22 
23     <Button
24         android:id="@+id/update_btn"
25         android:layout_width="wrap_content"
26         android:layout_height="wrap_content"
27         android:text="修改"/>
28     <Button
29         android:id="@+id/query_btn"
30         android:layout_width="wrap_content"
31         android:layout_height="wrap_content"
32         android:text="查询"/>
33 
34 
35 </LinearLayout>
复制代码

Activivy:

复制代码
  1 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  2 
  3     protected Button mInsertBtn;
  4     protected Button mDeleteBtn;
  5     protected Button mUpdateBtn;
  6     protected Button mQueryBtn;
  7     private DBHelper mHelper;
  8     private SQLiteDatabase mDatabase;
  9 
 10     @Override
 11     protected void onCreate(Bundle savedInstanceState) {
 12         super.onCreate(savedInstanceState);
 13         super.setContentView(R.layout.activity_main);
 14         initView();
 15 
 16         mHelper = new DBHelper(this);
 17         mDatabase = mHelper.getWritableDatabase();
 18     }
 19 
 20 
 21     private void initView() {
 22         mInsertBtn = (Button) findViewById(R.id.insert_btn);
 23         mInsertBtn.setOnClickListener(MainActivity.this);
 24         mDeleteBtn = (Button) findViewById(R.id.delete_btn);
 25         mDeleteBtn.setOnClickListener(MainActivity.this);
 26         mUpdateBtn = (Button) findViewById(R.id.update_btn);
 27         mUpdateBtn.setOnClickListener(MainActivity.this);
 28         mQueryBtn = (Button) findViewById(R.id.query_btn);
 29         mQueryBtn.setOnClickListener(MainActivity.this);
 30     }
 31 
 32     @Override
 33     public void onClick(View view) {
 34         if (view.getId() == R.id.insert_btn) {
 35             insertData();
 36         } else if (view.getId() == R.id.delete_btn) {
 37             deleteData();
 38         } else if (view.getId() == R.id.update_btn) {
 39             updateData();
 40         } else if (view.getId() == R.id.query_btn) {
 41             queryData();
 42         }
 43     }
 44 
 45     // 表名
 46     // null。数据库如果插入的数据为null,会引起数据库不稳定。为了防止崩溃,需要传入第二个参数要求的对象
 47     // 如果插入的数据不为null,没有必要传入第二个参数避免崩溃,所以为null
 48     // 插入的数据
 49     private void insertData() {
 50         ContentValues values = new ContentValues();
 51         values.put(DBHelper.NAME, "鹿晗");
 52         values.put(DBHelper.AGE, 17);
 53         mDatabase.insert(DBHelper.TABLE_NAME, null, values);
 54         Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
 55     }
 56 
 57     // 表名
 58     // 删除条件
 59     // 满足删除的值
 60     private void deleteData() {
 61         int count = mDatabase.delete(DBHelper.TABLE_NAME, DBHelper.NAME + " = ?", new String[]{"鹿晗"});
 62         Toast.makeText(this, "删除数量:"+count, Toast.LENGTH_SHORT).show();
 63     }
 64 
 65     // 表名
 66     // 修改后的数据
 67     // 修改条件
 68     // 满足修改的值
 69     private void updateData() {
 70         ContentValues values = new ContentValues();
 71         values.put(DBHelper.NAME, "小茗同学");
 72         values.put(DBHelper.AGE, 18);
 73         int count = mDatabase
 74                 .update(DBHelper.TABLE_NAME, values, DBHelper.NAME + " = ?", new String[]{"鹿晗"});
 75         Toast.makeText(this, "修改成功:" + count, Toast.LENGTH_SHORT).show();
 76     }
 77 
 78     // 表名
 79     // 查询字段
 80     // 查询条件
 81     // 满足查询的值
 82     // 分组
 83     // 分组筛选关键字
 84     // 排序
 85     private void queryData() {
 86         Cursor cursor = mDatabase.query(DBHelper.TABLE_NAME,
 87                 new String[]{DBHelper.NAME, DBHelper.AGE},
 88                 DBHelper.AGE + " > ?",
 89                 new String[]{"16"},
 90                 null,
 91                 null,
 92                 DBHelper.AGE + " desc");// 注意空格!
 93 
 94         int nameIndex = cursor.getColumnIndex(DBHelper.NAME);
 95         int ageIndex = cursor.getColumnIndex(DBHelper.AGE);
 96         while (cursor.moveToNext()) {
 97             String name = cursor.getString(nameIndex);
 98             String age = cursor.getString(ageIndex);
 99 
100             Log.d("1507", "name: " + name + ", age: " + age);
101         }
102 
103     }
104 
105 }
复制代码

创建数据库:

复制代码
 1 public class DBHelper extends SQLiteOpenHelper {
 2 
 3     // 数据库文件名
 4     public static final String DB_NAME = "my_database.db";
 5     // 数据库表名
 6     public static final String TABLE_NAME = "t_person";
 7     // 数据库版本号
 8     public static final int DB_VERSION = 1;
 9 
10     public static final String NAME = "name";
11     public static final String AGE = "age";
12 
13     public DBHelper(Context context) {
14         super(context, DB_NAME, null, DB_VERSION);
15     }
16 
17     // 当数据库文件创建时,执行初始化操作,并且只执行一次
18     @Override
19     public void onCreate(SQLiteDatabase db) {
20         // 建表
21         String sql = "create table " +
22                 TABLE_NAME +
23                 "(_id integer primary key autoincrement, " +
24                 NAME + " varchar, " +
25                 AGE + " varchar"
26                 + ")";
27 
28         db.execSQL(sql);
29     }
30 
31     // 当数据库版本更新执行该方法
32     @Override
33     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
34 
35     }
36 }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flutter是一种跨平台的移动应用程序开发框架,它提供了使用SQLite数据库的内置支持。 要使用SQLite数据库,您需要使用Flutter的sqlite包。您可以通过在pubspec.yaml文件中添加以下依赖项来获取此包: ```yaml dependencies: sqflite: ^2.0.0+3 ``` 一旦您添加了依赖项并运行了`flutter packages get`,您就可以开始使用SQLite数据库了。以下是如何使用SQLite数据库的一些示例: ### 创建数据库 ```dart import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; final database = openDatabase( join(await getDatabasesPath(), 'my_database.db'), onCreate: (db, version) { return db.execute( 'CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)', ); }, version: 1, ); ``` 在这个示例中,我们创建了一个名为`my_database.db`的数据库,并在其中创建了一个名为“users”的表。 ### 插入数据 ```dart await database.insert( 'users', {'id': 1, 'name': 'John', 'age': 30}, ); ``` 在这个示例中,我们向“users”表中插入了一条数据。 ### 询数据 ```dart final List<Map<String, dynamic>> users = await database.query('users'); ``` 在这个示例中,我们询了“users”表中的所有数据。 ### 更新数据 ```dart await database.update( 'users', {'age': 31}, where: 'name = ?', whereArgs: ['John'], ); ``` 在这个示例中,我们将“users”表中名为“John”的用户的年龄更新为31岁。 ### 除数据 ```dart await database.delete( 'users', where: 'name = ?', whereArgs: ['John'], ); ``` 在这个示例中,我们除了“users”表中名为“John”的用户的记录。 这是使用Flutter和SQLite数据库的一些基本示例。您可以使用这些示例来开始使用SQLite数据库,并根据您的需求进行修。 ### 回答2: 在Flutter中,可以使用sqflite插件来实现对SQLite数据库操作。 首先,需要在pubspec.yaml文件中添加sqflite插件的依赖: ``` dependencies: sqflite: ^x.x.x ``` 然后,在需要使用SQLite数据库的地方引入sqflite库: ``` import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; ``` 接下来,创建一个数据库的帮助类,用于管理数据库的创建和版本更新。可以创建一个名为DatabaseHelper的类,并在其内部提供一些静态方法。 ``` class DatabaseHelper { static Future<Database> database() async { String path = join(await getDatabasesPath(), 'database.db'); return await openDatabase(path, version: 1, onCreate: _createTable); } static Future<void> _createTable(Database db, int version) async { await db.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)'); } } ``` 在这个类中,我们定义了一个数据库方法,该方法通过getDatabasesPath()获取数据库的路径,并将其与数据库名称拼接在一起以获取完整路径。然后,我们通过openDatabase()方法打开数据库,如果数据库不存在,则创建数据库,并在数据库中创建名为users的表。 然后,可以在其他地方使用这个DatabaseHelper类,执行的操作。 ``` class UserRepository { static Future<void> addUser(String name) async { Database db = await DatabaseHelper.database(); await db.insert('users', {'name': name}); } static Future<void> deleteUser(int id) async { Database db = await DatabaseHelper.database(); await db.delete('users', where: 'id = ?', whereArgs: [id]); } static Future<void> updateUser(int id, String name) async { Database db = await DatabaseHelper.database(); await db.update('users', {'name': name}, where: 'id = ?', whereArgs: [id]); } static Future<List<Map<String, dynamic>>> getUsers() async { Database db = await DatabaseHelper.database(); return await db.query('users'); } } ``` 在这个示例中,我们通过addUser()方法向数据库中的users表中插入一条数据,通过deleteUser()方法根据id来除数据,通过updateUser()方法根据id来更新数据,通过getUsers()方法获取所有的用户数据。 以上就是使用sqflite插件在Flutter中使用SQLite数据库实现基本步骤。要注意的是,在实际使用中,还需要处理数据库的异常情况和事务处理。 ### 回答3: 使用Flutter操作SQLite数据库的步骤如下: 1. 导入相关依赖:在pubspec.yaml文件中添加sqflite和path两个依赖。 ``` dependencies: flutter: sdk: flutter sqflite: ^2.0.0 path: ^2.0.0 ``` 2. 创建数据库:在Flutter中,可以使用openDatabase函数创建一个SQLite数据库。 ```dart import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; final String tableName = 'person'; // 表名 Future<Database> database() async { return openDatabase( join(await getDatabasesPath(), 'database.db'), // 数据库名 onCreate: (db, version) { return db.execute( 'CREATE TABLE $tableName(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)', ); // 创建表 }, version: 1, // 数据库版本号 ); } ``` 3. 插入数据:使用insert函数将数据插入到数据库中。 ```dart Future<void> insertPerson(Person person) async { final db = await database(); await db.insert( tableName, person.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, // 冲突处理策略 ); } ``` 4. 询数据:使用query函数从数据库询数据。 ```dart Future<List<Map<String, dynamic>>> queryAllPersons() async { final db = await database(); return db.query(tableName); } ``` 5. 更新数据:使用update函数更新数据库中的数据。 ```dart Future<void> updatePerson(Person person) async { final db = await database(); await db.update( tableName, person.toMap(), where: 'id = ?', whereArgs: [person.id], // 条件参数,保证更新正确的记录 ); } ``` 6. 除数据:使用delete函数数据库中的数据。 ```dart Future<void> deletePerson(int id) async { final db = await database(); await db.delete( tableName, where: 'id = ?', whereArgs: [id], // 条件参数,保证除正确的记录 ); } ``` 以上就是在Flutter中使用SQLite数据库实现基本步骤。有了这些操作,你可以方便地处理数据库数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值