70,020
社区成员




#include <stdio.h>
#include <stdlib.h>
#include "sqlite/sqlite3.h"
#include <string.h>
int main(){
printf("mian函数开始\n");
int db_op_result; //数据库操作结果
char SqlStr[256]; //SQL语句
sqlite3 *db; //数据库文件指针
char DBName[40] = "/mnt/nandflash/dm.db"; //数据库文件路径
sqlite3_stmt *stmt; //Statement指针
printf("变量定义\n");
char *card_num_inuse;
char *user_name_result;
char *abcd;
abcd = (char *)malloc(sizeof(char*) * 30);
db_op_result = sqlite3_open(DBName,&db);
if (db_op_result) {
printf("打开数据库失败!! %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return -1;
}
printf("打开数据库成功\n");
sprintf(SqlStr, "select * from cardinfo");
db_op_result = sqlite3_prepare(db,SqlStr,-1,&stmt,0);
if(db_op_result != SQLITE_OK){
printf("SQLerror:%sn",sqlite3_errmsg(db));
}
// db_op_result = sqlite3_step(stmt);
// ncols=sqlite3_column_count(stmt);
printf("循环\n");
while(sqlite3_step(stmt) == SQLITE_ROW){
card_num_inuse = (char *) sqlite3_column_text(stmt, 0);
user_name_result = (char *) sqlite3_column_text(stmt, 1);
abcd = (char *) sqlite3_column_text(stmt,2);
printf("nimei1\n");
printf("%s",card_num_inuse);
printf("nimei2\n");
printf("%s",user_name_result);
printf("nimei3\n");
printf("%s",abcd);//打印这里没问题
printf("%d",strlen(abcd));//这里出现Segmentation fault
// strcpy(tmp,tvcolwm);
// if(strlen(tvcolwm) == 0){
// printf("这是空字符串啦,有问题的\n");
// }
printf("\n");
}
printf("%d\n",strlen(abcd));
//释放statement
sqlite3_finalize(stmt);
//关闭数据库
sqlite3_close(db);
printf("程序执行完毕\n");
free(abcd);
return 0;
}
CREATE TABLE cardinfo(card_snr char(50) not null,user_name char(50) not null, tvcolumn char(20));
cardinfo数据
sqlite> select * from cardinfo;
0x9e|Τ¾§|
0x6e|ÁÎÒÕ|
0x0e|ÀÍÃù¶¬|
0x5e|Íõΰ¶«|
0x2e|Áú½Ñà|
0x3e|µËɯɯ|
0x6e|ÑÔ»Ô|
0xfe|·½³É|
0xad|ÑîÓ¨|
0x16|ÁÖÐÂÆ½|
0x0e|³ÂÁÁ|
0x9e|admin|
0x1e|ÕŰ½|
0xce|ÕÔÐÂÓî|
0xbe|ÀîÏþÑà|
一共三个字段,最后一个字段是后面添加的,所以,没有数据,我想读取这个值进行判断。输出是没有问题的,但是用函数如strlen()都会报错。