SQLite---T_double

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

 

public class DB {

    // 数据库相关数据

    private static final String DATABASE_NAME = "DB.db";// 定义数据库名

    private static final int DATABASE_VERSION = 1;// 数据版本,如果构造器调用的版本比之前创建的高 此类自动调用onUpgrade

    private static final String TABLE_NAME = "PEOPLE"; // 定义数据库表名

 

    private Context context;// 定义上下文

    private SQLiteHelper helper;// 继承于抽象类SQLiteOpenHelper

    private SQLiteDatabase sDatabase;// 该类封装了一些操作数据库的API,使用该类可以完成对数据进行增删改查

    private Cursor cursor;

 

    public DB(Context ct) {

       this.context = ct;

    }

 

    /*

     * SQliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理。

     * 要使用它必须实现它的onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,int,int)方法

     * onCreate:当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。

     * onUpgrade:当数据库需要被更新的时候执行,例如删除旧表,创建新表。

     */

 

    public class SQLiteHelper extends SQLiteOpenHelper {

       public SQLiteHelper(Context context) {

           super(context, DATABASE_NAME,null,DATABASE_VERSION);

       }

 

       @Override

       public void onCreate(SQLiteDatabase db) {

           // 创建表名为PEOPLE的数据表

           final String P_table = "CREATE TABLE " +TABLE_NAME + " ( "

                  + People.id + " integer primary key autoincrement,"

                  + People.name + " text not null," + People.pwd

                  + " text not null);";

 

           db.execSQL(P_table);

       }

 

       // 如果构造器的本本比之前创建的高,就自动调用onUpgrade的方法

       @Override

       public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

           String upgrade = "DORP TABLE IF EXIST " + DATABASE_NAME;

           db.execSQL(upgrade);

           onCreate(db);

       }

    }

 

    // ******************SQLiteHelper类结束**************************

    /**

     * 建立数据库连接

     */

    public void Open() {

       helper = new SQLiteHelper(this.context);

    }

 

    /**

     * 关闭数据库连接

     */

    public void Close(SQLiteDatabase sDatabase) {

       if (cursor != null) {

           cursor.close();

       }

       if (helper != null) {

           helper.close();

       }

    }

 

    /**

     * 传入用户名,密码添加到数据库

     *

     * @param name

     * @param pwd

     * @return

     */

    public int addPeople(String name, String pwd) {

       String sort = "id desc";// 定义按照id降序

       int count = 0;

       Open();

       sDatabase = helper.getWritableDatabase();

       // 插入数据方法一

       ContentValues values = new ContentValues();

       values.put(People.name, name);

       values.put(People.pwd, pwd);

       sDatabase.insert(TABLE_NAME, null, values);

 

       /*

        * 插入数据方法二 String

        * sql="insert into "+TABLE_NAME+"( "+People.name+" , "+People

        * .pwd+" ) values ( 'mxt','mxt')"; sDatabase.execSQL(sql);

        */

 

       cursor = sDatabase.query(TABLE_NAME, null,// columns 要返回的列 select *,

              null, // selection 类似where,

              null, // selectionArgs,

              null, // groupBy,

              null, // having,

              sort); // sort

       count = cursor.getCount();

       Close(sDatabase);

       return count;

    }

 

    /**

     * 判断用户名是否存在(登陆)

     *

     * @param name

     * @param pwd

     * @return

     */

    public boolean login(String name, String pwd) {

       boolean flag = false;

       Open();

       sDatabase = helper.getReadableDatabase();

       String columns[] = { People.name };

       String sql = People.name + " ='" + name + "' AND " + People.pwd + " ='"

              + pwd + "'";

 

       cursor = sDatabase.query(TABLE_NAME,// 表名

              columns,// columns 要查询出来的列名,

              sql, // selection

                     // 查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”

              null, // selectionArgs 对应于selection语句中占位符的值,

              null, // groupBy 相当于select语句group by关键字后面的部分,

              null, // having 相当于select语句having关键字后面的部分,

              null); // sort 相当于排序

       if (cursor.moveToFirst()) {

           flag = true;

       }

       Close(sDatabase);

       return flag;

    }

    /*

     * sDatabase.update(表名, values(更改后的数据), whereClause(更改的条件),

     * whereArgs(更改的条件值)) sDatabase.insert(表名, nullColumnHack, values(要插入的数据))

     * sDatabase.delete(表名, whereClause(删除的条件), whereArgs(删除条件的数据值))

     */

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 C 语言读写 SQLite3 数据库需要使用 SQLite3 库,可以通过以下步骤进行操作: 1. 引入 SQLite3 库头文件 `sqlite3.h` ```c #include <sqlite3.h> ``` 2. 打开数据库文件,使用 `sqlite3_open()` 函数 ```c sqlite3 *db; int rc = sqlite3_open("example.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } ``` 3. 创建表格,使用 `sqlite3_exec()` 函数执行 SQL 语句 ```c char *sql = "CREATE TABLE IF NOT EXISTS stocks (date TEXT, symbol TEXT, price REAL);"; rc = sqlite3_exec(db, sql, NULL, 0, &errmsg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", errmsg); sqlite3_free(errmsg); sqlite3_close(db); return 1; } ``` 4. 插入数据,使用 `sqlite3_prepare_v2()` 函数编译 SQL 语句,再使用 `sqlite3_bind_XXX()` 函数绑定参数,最后使用 `sqlite3_step()` 函数执行 SQL 语句 ```c sqlite3_stmt *stmt; const char *sql = "INSERT INTO stocks VALUES (?, ?, ?);"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } sqlite3_bind_text(stmt, 1, "2022-01-01", -1, SQLITE_STATIC); sqlite3_bind_text(stmt, 2, "AAPL", -1, SQLITE_STATIC); sqlite3_bind_double(stmt, 3, 123.45); rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_finalize(stmt); sqlite3_close(db); return 1; } sqlite3_finalize(stmt); ``` 5. 查询数据,使用 `sqlite3_prepare_v2()` 函数编译 SQL 语句,再使用 `sqlite3_bind_XXX()` 函数绑定参数,最后使用 `sqlite3_step()` 函数执行 SQL 语句,再使用 `sqlite3_column_XXX()` 函数获取结果 ```c sqlite3_stmt *stmt; const char *sql = "SELECT * FROM stocks WHERE symbol = ?;"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } sqlite3_bind_text(stmt, 1, "AAPL", -1, SQLITE_STATIC); while (sqlite3_step(stmt) == SQLITE_ROW) { const char *date = (const char *)sqlite3_column_text(stmt, 0); const char *symbol = (const char *)sqlite3_column_text(stmt, 1); double price = sqlite3_column_double(stmt, 2); printf("%s %s %g\n", date, symbol, price); } sqlite3_finalize(stmt); ``` 6. 更新数据,使用 `sqlite3_prepare_v2()` 函数编译 SQL 语句,再使用 `sqlite3_bind_XXX()` 函数绑定参数,最后使用 `sqlite3_step()` 函数执行 SQL 语句 ```c sqlite3_stmt *stmt; const char *sql = "UPDATE stocks SET price = ? WHERE symbol = ?;"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } sqlite3_bind_double(stmt, 1, 456.78); sqlite3_bind_text(stmt, 2, "AAPL", -1, SQLITE_STATIC); rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_finalize(stmt); sqlite3_close(db); return 1; } sqlite3_finalize(stmt); ``` 7. 删除数据,使用 `sqlite3_prepare_v2()` 函数编译 SQL 语句,再使用 `sqlite3_bind_XXX()` 函数绑定参数,最后使用 `sqlite3_step()` 函数执行 SQL 语句 ```c sqlite3_stmt *stmt; const char *sql = "DELETE FROM stocks WHERE symbol = ?;"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } sqlite3_bind_text(stmt, 1, "AAPL", -1, SQLITE_STATIC); rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); sqlite3_finalize(stmt); sqlite3_close(db); return 1; } sqlite3_finalize(stmt); ``` 8. 关闭数据库,使用 `sqlite3_close()` 函数 ```c sqlite3_close(db); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值