sqlite备忘

sqlite备忘(转) 
原来sqlite也有设超时。。。
记一下,好记性不如烂笔头。。。

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
功能:打开数据库,如果不存在则自动创建.
PARAM1(IN): 数据库文件名,UTF-8格式
PARAM2(OUT):  返回的数据库句柄
返回值:返回SQLITE_OK成功,反之失败(数据库句柄ppDb为空),失败值见具体SQLITE_*定义.
=====================================================================================

int sqlite3_close(sqlite3 *);
功能:关闭数据库
PARAM1(IN):打开的数据库句柄
返回值:返回SQLITE_OK成功,反之失败.
=====================================================================================

int sqlite3_exec(
  sqlite3*,                     /* An open database */
  const char *sql,              /* SQL to be executed */
  sqlite3_callback,             /* Callback function */
  void *,                       /* 1st argument to callback function */
  char **errmsg                 /* Error msg written here */
);
功能:执行SQL
PARAM1(IN):数据库句柄
PARAM2(IN):sql语句,以\0结尾.
PARAM3(IN):回调函数
PARAM4(IN):回调参数
PARAM5(OUT):输出错误信息
返回值:SQLITE_OK成功,反之失败,失败后错误信息见PARAM5;
说明:如果有多条SQL语句,中间用分号(;)隔开.回调函数和回调参数通常在查询语句会用到,
对每条查询结果结果都会调用回调函数一次.
回调函数格式:
typedef int(*sqlite3_callback)(void *,int ,char **,char **);
参数1:sqlite3_exec中传入的参数
参数2:总列数.
参数3:列数据(char*)
参数4:列名称(char*)

=====================================================================================
int sqlite3_get_table(
  sqlite3*,               /* An open database */
  const char *sql,       /* SQL to be executed */
  char ***resultp,       /* Result written to a char *[]  that this points to */
  int *nrow,             /* Number of result rows written here */
  int *ncolumn,          /* Number of result columns written here */
  char **errmsg          /* Error msg written here */
);
功能:查询表
PARAM1(IN):数据库句柄
PARAM2(IN):sql语句,以\0结尾.
PARAM3(OUT):查询结果
PARAM4(OUT):返回行数(多少条数据)
PARAM5(OUT):返回列数(多少字段)
PARAM6(OUT):返回错误信息
返回值:SQLITE_OK成功,房子失败见错误信息

=====================================================================================
void sqlite3_free_table(char **result);
功能:释放通过sqlite3_get_table查询保存的结果数据
PARAM1(IN):要释放的数据指针


=====================================================================================
int sqlite3_prepare(
  sqlite3 *db,            /* Database handle */
  const char *zSql,       /* SQL statement, UTF-8 encoded */
  int nBytes,             /* Length of zSql in bytes. */
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
);
功能:构造查询
PARAM1(IN):数据库句柄
PARAM2(IN):sql语句
PARAM3(IN):sql语句长度,设置成-1则自动按字符串计算sql语句长度
PARAM4(OUT):保存的查询结构体,
PARAM5(OUT):NULL即可
返回值:SQLITE_OK成功.


=====================================================================================
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
功能:为查询结构体绑定数据
PARAM1(IN):查询结构体
PARAM2(IN):绑定第几个数据(sql语句中的第几个问号(?))
PARAM3(IN):二进制数据指针
PARAM4(IN):二进制数据长度
PARAM5(IN):析构回调函数,通常设置NULL,结束后自己释放
返回值:S_OK成功.
说明:绑定函数必须要在sqlite3_step前,sqlite3_prepare或者sqlite3_reset之后调用.
未绑定的参数缺省为NULL,类似的绑定函数还有以下
int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);

 

=====================================================================================
int sqlite3_reset(sqlite3_stmt *pStmt);
功能:重置所有绑定的值,回到刚刚调用sqlite3_prepare后的状态


=====================================================================================
int sqlite3_step(sqlite3_stmt*);
功能:执行查询
PARAM1:查询结构体
返回值:
SQLITE_BUSY:数据库被锁,可以等待释放后重新调用该函数
SQLITE_DONE:成功
SQLITE_ROW:成功并且有数据返回,对每查询到一条数据都会返回该值,
   可以调用sqlite3_column_*函数获取数据后重新调用处理下一条数据
SQLITE_ERROR:失败
SQLITE_MISUSE:错误的调用,比如已经返回了SQLITE_DONE或者SQLITE_ERROR后还继续调用该函数


=====================================================================================
int sqlite3_finalize(sqlite3_stmt *pStmt);
功能:释放查询结构体

=====================================================================================
int sqlite3_key(
  sqlite3 *db,                   /* Database to be rekeyed */
  const void *pKey, int nKey     /* The key */
);
功能:为加密的数据库指定密码,改函数在sqlite3_open之后调用

=====================================================================================
int sqlite3_rekey(
  sqlite3 *db,                   /* Database to be rekeyed */
  const void *pKey, int nKey     /* The new key */
);
功能:重设数据库密码,如果pKey = 0 或者 nKey = 0,这数据库不加密


=====================================================================================

 


const char *sqlite3_libversion(void);
int sqlite3_libversion_number(void);
功能:获取版本号

sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
功能:获取最后插入的行标示.

int sqlite3_changes(sqlite3*);
功能:获取最近执行的sqlite3_exec影响的行数.

int sqlite3_total_changes(sqlite3*);
功能:获取自从数据库打开后有改动的函数

void sqlite3_interrupt(sqlite3*);
功能:打断或停止数据库当前操作.

int sqlite3_complete(const char *sql);
功能:判断语句是否以分号(;)结尾

int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
功能:设置查询忙碌时的回调处理
说明:缺省的回调函数为空,如果回调函数为空,表锁定后sqlite3_exec()执行会直接返回SQLITE_BUSY

int sqlite3_busy_timeout(sqlite3*, int ms);
功能:设置查询超时时间(毫秒)

 

char *sqlite3_mprintf(const char*,...);
char *sqlite3_vmprintf(const char*, va_list);
char *sqlite3_snprintf(int,char*,const char*, ...);
功能:格式化字符,需要用%q来代替%s.(主要是不用对分号'进行转义)


void *sqlite3_malloc(int);
void *sqlite3_realloc(void*, int);
void sqlite3_free(void*);
功能:内存函数

int sqlite3_set_authorizer(
  sqlite3*,
  int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
  void *pUserData
);
功能:设置数据库授权

void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
void *sqlite3_profile(sqlite3*,
   void(*xProfile)(void*,const char*,sqlite_uint64), void*);

void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
功能:设置执行回调函数,sqlite3_exec(),sqlite3_step() ,sqlite3_get_table()时会调用

void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
功能:设置事务回调函数

int sqlite3_errcode(sqlite3 *db);
const char *sqlite3_errmsg(sqlite3*);
功能:获取错误码和错误消息

int sqlite3_bind_parameter_count(sqlite3_stmt*);
功能:返回需要绑定的参数数目(sql语句中问号?数量)

const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
功能:获取绑定参数名字,?参数返回NULL

int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
功能:获取绑定参数索引

int sqlite3_clear_bindings(sqlite3_stmt*);
功能:清除绑定的参数


int sqlite3_column_count(sqlite3_stmt *pStmt);
功能:获取列数
const char *sqlite3_column_name(sqlite3_stmt*,int);
功能:获取列名


const char *sqlite3_column_database_name(sqlite3_stmt*,int);
const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
const char *sqlite3_column_table_name(sqlite3_stmt*,int);
const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
功能:返回列信息?

const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
功能:返回列数据类型

int sqlite3_data_count(sqlite3_stmt *pStmt);
功能:返回数据数量(行数)

 

const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
double sqlite3_column_double(sqlite3_stmt*, int iCol);
int sqlite3_column_int(sqlite3_stmt*, int iCol);
sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
int sqlite3_column_type(sqlite3_stmt*, int iCol);
int sqlite3_column_numeric_type(sqlite3_stmt*, int iCol);
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
功能:获取列数据


int sqlite3_create_function(
  sqlite3 *,
  const char *zFunctionName,
  int nArg,
  int eTextRep,
  void*,
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
  void (*xFinal)(sqlite3_context*)
);
功能:

const void *sqlite3_value_blob(sqlite3_value*);
int sqlite3_value_bytes(sqlite3_value*);
int sqlite3_value_bytes16(sqlite3_value*);
double sqlite3_value_double(sqlite3_value*);
int sqlite3_value_int(sqlite3_value*);
sqlite_int64 sqlite3_value_int64(sqlite3_value*);
const unsigned char *sqlite3_value_text(sqlite3_value*);
const void *sqlite3_value_text16(sqlite3_value*);
const void *sqlite3_value_text16le(sqlite3_value*);
const void *sqlite3_value_text16be(sqlite3_value*);
int sqlite3_value_type(sqlite3_value*);
int sqlite3_value_numeric_type(sqlite3_value*);
功能:类似sqlite3_column_*函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 1. 了解SQLite数据库的基本概念和使用方法 2. 掌握Android Studio中SQLite数据库的操作方法 3. 能够使用SQLite数据库存储数据并读取数据 实验步骤: 1. 新建一个Android Studio项目,并创建一个空白Activity。 2. 在项目的build.gradle文件中添加依赖项:implementation 'com.android.support:support-core-utils:28.0.0',用于支持SQLite数据库的操作。 3. 在布局文件中添加一个EditText和两个Button,分别用于输入备忘录内容、保存备忘录和读取备忘录。 4. 在Activity中定义一个SQLiteOpenHelper类,用于创建和更新数据库。 5. 在Activity中定义一个SQLiteOpenHelper对象和一个SQLiteDatabase对象,用于操作数据库。 6. 在Activity的onCreate()方法中,通过SQLiteOpenHelper对象创建或打开数据库,并创建一个备忘录表。 7. 在保存备忘录按钮的点击事件处理方法中,将EditText中的内容插入到备忘录表中。 8. 在读取备忘录按钮的点击事件处理方法中,查询备忘录表中的所有数据,并在EditText中显示。 实验代码: ```java public class MemoActivity extends AppCompatActivity { private EditText mMemoEditText; private Button mSaveButton; private Button mLoadButton; private MemoDbHelper mDbHelper; private SQLiteDatabase mDb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_memo); mMemoEditText = findViewById(R.id.memo_edit_text); mSaveButton = findViewById(R.id.save_button); mLoadButton = findViewById(R.id.load_button); mDbHelper = new MemoDbHelper(this); mDb = mDbHelper.getWritableDatabase(); mDb.execSQL(MemoContract.MemoEntry.SQL_CREATE_ENTRIES); } public void onSaveButtonClick(View view) { ContentValues values = new ContentValues(); values.put(MemoContract.MemoEntry.COLUMN_NAME_CONTENT, mMemoEditText.getText().toString()); mDb.insert(MemoContract.MemoEntry.TABLE_NAME, null, values); Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show(); } public void onLoadButtonClick(View view) { Cursor cursor = mDb.query( MemoContract.MemoEntry.TABLE_NAME, null, null, null, null, null, null ); StringBuilder builder = new StringBuilder(); while (cursor.moveToNext()) { String content = cursor.getString(cursor.getColumnIndexOrThrow(MemoContract.MemoEntry.COLUMN_NAME_CONTENT)); builder.append(content); builder.append("\n"); } mMemoEditText.setText(builder.toString()); } private static class MemoDbHelper extends SQLiteOpenHelper { public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "Memo.db"; public MemoDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(MemoContract.MemoEntry.SQL_CREATE_ENTRIES); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(MemoContract.MemoEntry.SQL_DELETE_ENTRIES); onCreate(db); } } } ``` 实验结果: 经过实验,可以成功地使用SQLite数据库存储备忘录数据,并且能够读取备忘录数据并在EditText中显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值