sqlite插入数据的问题

编程自留地 2011-11-14 10:18:47
void func(char * cardtype,char * cardsn){
/*省略不重要的内容*/

sql = "insert into \"time\" VALUES(null,---,---)"
}

本人想在那个sql语句的---处动态地插入cardtype和cardsn两个字符串,无论是用 cardsn和*cardsn都不行。本程序是用C语言实现的,请问高手应该怎么办呢?本程序要实现把这两个参数写到数据库里面。

...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
northcan 2011-11-19
  • 打赏
  • 举报
回复
Formatted String Printing Functions
char *sqlite3_mprintf(const char*,...);
char *sqlite3_vmprintf(const char*, va_list);
char *sqlite3_snprintf(int,char*,const char*, ...);
char *sqlite3_vsnprintf(int,char*,const char*, va_list);


These routines are work-alikes of the "printf()" family of functions from the standard C library.

The sqlite3_mprintf() and sqlite3_vmprintf() routines write their results into memory obtained from sqlite3_malloc(). The strings returned by these two routines should be released by sqlite3_free().
编程自留地 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liuzhidong123 的回复:]

引用 1 楼 hackerjly 的回复:

C/C++ code

char szcharSql[MAX_PATH];

sprintf(szcharSql,
"Insert Into t_Table1(FCardType, FCardSN)VALUES(%s, %s)",
cardtype,
cardsn);

Excute SQL...


还是不行啊,我给你写……
[/Quote]

已经解决了,还好查了sqlite的文档找到一个函数。
char *zText = "It's a happy day!";
One can use this text in an SQL statement as follows:

char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
sqlite3_exec(db, zSQL, 0, 0, 0);
sqlite3_free(zSQL);
编程自留地 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hackerjly 的回复:]

C/C++ code

char szcharSql[MAX_PATH];

sprintf(szcharSql,
"Insert Into t_Table1(FCardType, FCardSN)VALUES(%s, %s)",
cardtype,
cardsn);

Excute SQL...
[/Quote]

还是不行啊,我给你写详细点吧,你再指点我一下。

void Func(unsigned char *cardtype,unsigned *cardsn){
char *sql = "create table time (ID INTEGER PRIMARY KEY ,SensorID TEXT,SiteNum TEXT);";


//sql = "insert into time VALUES(NULL,cardtype,cardsn);";//这种方法传不进去
//fprintf(sql,"insert into time (SensorID,SiteNum)VALUES(NULL,%s,%s)",cardtype,cardsn);//这是你的方法,可也是不行的,和上面的结果是一样的

sql = "insert into time VALUES(NULL,'aa','bb');";//这样就能存到数据库里面
}

我的目的是把两个参数传到sql语句里面,实现动态地插入数据,请问应该怎么办呢?这个问题困扰我好几天了,请您一定出手相助,在下不胜感激。
编程自留地 2011-11-16
  • 打赏
  • 举报
回复
还是不行啊,我给你写详细点吧,你再指点我一下。

void Func(unsigned char *cardtype,unsigned *cardsn){
char *sql = "create table time (ID INTEGER PRIMARY KEY ,SensorID TEXT,SiteNum TEXT);";


//sql = "insert into time VALUES(NULL,cardtype,cardsn);";//这种方法传不进去
//fprintf(sql,"insert into time (SensorID,SiteNum)VALUES(NULL,%s,%s)",cardtype,cardsn);//这是你的方法,可也是不行的,和上面的结果是一样的

sql = "insert into time VALUES(NULL,'aa','bb');";//这样就能存到数据库里面
}

我的目的是把两个参数传到sql语句里面,实现动态地插入数据,请问应该怎么办呢?这个问题困扰我好几天了,请您一定出手相助,在下不胜感激。
HackerJLY 2011-11-14
  • 打赏
  • 举报
回复

char szcharSql[MAX_PATH];

sprintf(szcharSql,
"Insert Into t_Table1(FCardType, FCardSN)VALUES(%s, %s)",
cardtype,
cardsn);

Excute SQL...

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧