forked from xuos/xiuos
				
			
		
			
				
	
	
		
			160 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Copyright (c) 2006-2022, RT-Thread Development Team
 | |
|  *
 | |
|  * SPDX-License-Identifier: Apache-2.0
 | |
|  *
 | |
|  * Change Logs:
 | |
|  * Date           Author       Notes
 | |
|  * 2020-03-06     lizhen9880   first version
 | |
|  */
 | |
| 
 | |
| #ifndef __DBHELPER_H__
 | |
| #define __DBHELPER_H__
 | |
| 
 | |
| #include <sqlite3.h>
 | |
| #ifdef ADD_RTTHREAD_FEATURES
 | |
| #include <rtthread.h>
 | |
| #endif
 | |
| 
 | |
| #define DB_SQL_MAX_LEN PKG_SQLITE_SQL_MAX_LEN
 | |
| 
 | |
| int db_helper_init(void);
 | |
| int db_create_database(const char *sqlstr);
 | |
| /**
 | |
|  * This function will be used for the operating that is not SELECT.It support executing multiple
 | |
|  * SQL statements.
 | |
|  *
 | |
|  * @param sqlstr the SQL statements strings.if there are more than one
 | |
|  *               statements in the sqlstr to execute,separate them by a semicolon(;).
 | |
|  * @param bind the callback function supported by user.bind data and call the sqlite3_step function.
 | |
|  * @param param the parameter for the callback "bind".
 | |
|  * @return  success or fail.
 | |
|  */
 | |
| int db_nonquery_operator(const char *sqlstr, int (*bind)(sqlite3_stmt *, int index, void *arg), void *param);
 | |
| 
 | |
| /**
 | |
|  * This function will be used for the operating that is not SELECT.The additional
 | |
|  * arguments following format are formatted and inserted in the resulting string
 | |
|  * replacing their respective specifiers.
 | |
|  *
 | |
|  * @param sql the SQL statement.
 | |
|  * @param fmt the args format.such as %s string,%d int.
 | |
|  * @param ... the additional arguments
 | |
|  * @return  success or fail.
 | |
|  */
 | |
| int db_nonquery_by_varpara(const char *sql, const char *fmt, ...);
 | |
| 
 | |
| /**
 | |
|  * This function will be used for the transaction that is not SELECT.
 | |
|  *
 | |
|  * @param exec_sqls the callback function of executing SQL statements.
 | |
|  * @param arg the parameter for the callback "exec_sqls".
 | |
|  * @return  success or fail.
 | |
|  */
 | |
| int db_nonquery_transaction(int (*exec_sqls)(sqlite3 *db, void *arg), void *arg);
 | |
| 
 | |
| /**
 | |
|  * This function will be used for the SELECT operating.The additional arguments
 | |
|  * following format are formatted and inserted in the resulting string replacing
 | |
|  * their respective specifiers.
 | |
|  *
 | |
|  * @param sql the SQL statements.
 | |
|  * @param create the callback function supported by user.
 | |
|  * @param arg the parameter for the callback "create".
 | |
|  * @param fmt the args format.such as %s string,%d int.
 | |
|  * @param ... the additional arguments
 | |
|  * @return  success or fail.
 | |
|  */
 | |
| int db_query_by_varpara(const char *sql, int (*create)(sqlite3_stmt *stmt, void *arg), void *arg, const char *fmt, ...);
 | |
| 
 | |
| /**
 | |
|  * This function will return the number of records returned by a select query.
 | |
|  * This function only gets the 1st row of the 1st column.
 | |
|  *
 | |
|  * @param sql the SQL statement SELECT COUNT() FROM .
 | |
|  * @return  the count or fail.
 | |
|  */
 | |
| int db_query_count_result(const char *sql);
 | |
| 
 | |
| /**
 | |
|  * This function will get the blob from the "index" colum.
 | |
|  *
 | |
|  * @param stmt the SQL statement returned by the function sqlite3_step().
 | |
|  * @param index the colum index.the first colum's index value is 0.
 | |
|  * @param out the output buffer.the result will put in this buffer.
 | |
|  * @return  the result length or fail.
 | |
|  */
 | |
| int db_stmt_get_blob(sqlite3_stmt *stmt, int index, unsigned char *out);
 | |
| 
 | |
| /**
 | |
|  * This function will get the text from the "index" colum.
 | |
|  *
 | |
|  * @param stmt the SQL statement returned by the function sqlite3_step().
 | |
|  * @param index the colum index.the first colum's index value is 0.
 | |
|  * @param out the output buffer.the result will put in this buffer.
 | |
|  * @return  the result length or fail.
 | |
|  */
 | |
| int db_stmt_get_text(sqlite3_stmt *stmt, int index, char *out);
 | |
| 
 | |
| /**
 | |
|  * This function will get a integer from the "index" colum.
 | |
|  *
 | |
|  * @param stmt the SQL statement returned by the function sqlite3_step().
 | |
|  * @param index the colum index.the first colum's index value is 0.
 | |
|  * @return  the result.
 | |
|  */
 | |
| int db_stmt_get_int(sqlite3_stmt *stmt, int index);
 | |
| 
 | |
| /**
 | |
|  * This function will get a double precision value from the "index" colum.
 | |
|  *
 | |
|  * @param stmt the SQL statement returned by the function sqlite3_step().
 | |
|  * @param index the colum index.the first colum's index value is 0.
 | |
|  * @return  the result.
 | |
|  */
 | |
| double db_stmt_get_double(sqlite3_stmt *stmt, int index);
 | |
| 
 | |
| /**
 | |
|  * This function will check a table exist or not by table name.
 | |
|  *
 | |
|  * @param tbl_name the table name.
 | |
|  * @return >0:existed; ==0:not existed; <0:ERROR
 | |
|  */
 | |
| int db_table_is_exist(const char *tbl_name);
 | |
| 
 | |
| /**
 | |
|  * This function will connect DB
 | |
|  *
 | |
|  * @param name the DB filename.
 | |
|  * @return RT_EOK:success
 | |
|  *         -RT_ERROR:the input name is too long
 | |
|  */
 | |
| int db_connect(char *name);
 | |
| 
 | |
| /**
 | |
|  * This function will disconnect DB
 | |
|  *
 | |
|  * @param name the DB filename.
 | |
|  * @return RT_EOK:success
 | |
|  *         -RT_ERROR:the input name is too long
 | |
|  */
 | |
| int db_disconnect(char *name);
 | |
| 
 | |
| /**
 | |
|  * This function will connect DB
 | |
|  *
 | |
|  * @param name the DB filename.
 | |
|  * @return 0:success
 | |
|  *         -1:the input name is too long
 | |
|  */
 | |
| int db_set_name(char *name);
 | |
| 
 | |
| /**
 | |
|  * This function will get the current DB filename
 | |
|  *
 | |
|  * @return the current DB filename
 | |
|  *
 | |
|  */
 | |
| char *db_get_name(void);
 | |
| #endif
 |