求指点-c语言数读取据库用sqlite3_prepare

问题描述

c语言数读取据库用sqlite3_prepare

int g_XLZTA_Array[255][9] ;

/************************************************

  • 功能:从数据库里读信令状态
  • 输入:无
  • 输出:无
  • 返回:无
    ************************************************/
    int getPD_Key_StateByState(int State)
    {
    char sql[128] = { 0 };
    const char *errmsg = NULL;
    sqlite3_stmt *pstmt;
    int ret = -1;
    int i = 0;

    sprintf(sql,
    "select State,Key_ID,Long_Red,Long_Green,Long_Yellow,Red,Green,Yellow ,Con_State form XLZT_A where State= %d",
    State);
    ret = sqlite3_prepare(pd_db, sql, strlen(sql), &pstmt, &errmsg);
    if (ret != SQLITE_OK)
    {
    printf("data base error : %sn", errmsg);
    sqlite3_free((void *) errmsg);
    return 0;
    }

    for (i = 0; i < 17; i++)
    {
    ret = sqlite3_step(pstmt);

    if (ret != SQLITE_ROW)
    {
        return 0;
    }
    
    g_XLZTA_Array[i][0] = sqlite3_column_int(pstmt, 0);
    g_XLZTA_Array[i][1] = sqlite3_column_int(pstmt, 1);
    g_XLZTA_Array[i][2] = sqlite3_column_int(pstmt, 2);
    g_XLZTA_Array[i][3] = sqlite3_column_int(pstmt, 3);
    g_XLZTA_Array[i][4] = sqlite3_column_int(pstmt, 4);
    g_XLZTA_Array[i][5] = sqlite3_column_int(pstmt, 5);
    g_XLZTA_Array[i][6] = sqlite3_column_int(pstmt, 6);
    g_XLZTA_Array[i][7] = sqlite3_column_int(pstmt, 7);
    g_XLZTA_Array[i][8] = sqlite3_column_int(pstmt, 8);
    LOG(LV_DEBUG,
            "State = %d,Key_ID = %d, Long_Red = %d,Log_Green = %d,Long_Yellow = %d,Red = %d,Green = %d,Yellow = %d,Con_State = %d",
            g_XLZTA_Array[i][0], g_XLZTA_Array[i][1], g_XLZTA_Array[i][2],
            g_XLZTA_Array[i][3], g_XLZTA_Array[i][4], g_XLZTA_Array[i][5],
            g_XLZTA_Array[i][6], g_XLZTA_Array[i][7], g_XLZTA_Array[i][8]);
    

    }

    return 1;
    }

void init_data_base(void)
{
int db_ret = -1;

db_ret = sqlite3_open(PD_DATA_BASE_FILE_PATH, &pd_db);
if (db_ret != SQLITE_OK)
{
    LOG(LV_FATAL,"init_data_base sqlite3_open pd_db error");
}
db_ret = sqlite3_open(PDT_DATA_BASE_FILE_PATH, &pdt_db);
if (db_ret != SQLITE_OK)
{
    LOG(LV_FATAL,"init_data_base sqlite3_open pdt_db error");
}
getCurrentPdSignalTableName(XLB_Name);
//getCurrentPdSignalTableName(XLZT_Name);           //信令状态

}

错误:
data base error : select State,Key_ID,Long_Red,Long_Green,Long_Yellow,Red,Green,Yellow ,Con_State form XLZT_A where State= 2
*** glibc detected *** ./PD_task: munmap_chunk(): invalid pointer: 0xb6d5c8f0 ***

解决方案

是不是有的字段名写的不对,或是大小写问题

解决方案二:

首先你有没有打开数据库的连接,其次你直接运行select State,Key_ID,Long_Red,Long_Green,Long_Yellow,Red,Green,Yellow ,Con_State form XLZT_A where State= 2 是否会报错?

时间: 2024-09-26 13:24:21

求指点-c语言数读取据库用sqlite3_prepare的相关文章

c语言-菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点

问题描述 菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点 Description 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前n项之和. Input 多测试用例,每个测试用例一行,每行是一个正整数n Output 为每个测试用例单独输出一行:该数列的前n项之和.结果均保留小数点后10位. Sample Input 1 2 3 Sample Output 2.0000000000 3.5000000000

c语言-C语言完数问题,新手求指点~谢谢

问题描述 C语言完数问题,新手求指点~谢谢 C语言课后习题,求1000以内的完数,按以下格式输出: 6 its factors are 1,2,3 为什么我改成和答案一样的都输出空., 代码如下:#include int main() { int m,i,s; for(m=2;m<1000;m++)//2-1000个数 { s=0; for(i=1;i<=m;i++) if((m%i)==0)s=s+i; if(s==m) { printf("%d,its factors are&q

c语言-C语言链表应用一元多项式相加,程序运行不了,求指点

问题描述 C语言链表应用一元多项式相加,程序运行不了,求指点 #include #include #include //一元多项式相加 typedef int Status; typedef struct Node{ float coef; int expn; struct Node *next; }Node,*LinkList; void CreatList(LinkList &P,int m)//按指数升序将元素依次插到第一个结点前,得到降序的表 { void Insfirst(LinkLi

c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点

问题描述 c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点 自定义的头文件 typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; 如下是使用形参是指针的引用的函数,结果是正确的 #include "BiTree.h" #include "stdlib.h" #include "stdio.h" bool Delete

求一java语言写的动态加载树!(从数据库读取节点的那种)

问题描述 最近想研究研究java动态树,extjs的倒是看过,不会改,因为对于extjs不熟.想自己封装一个,运用ssh框架,sqlserver2005数据库,jQuery等.哪位能指点一下,给点意见. 解决方案 解决方案二:思路:递归算法~~~还算简单解决方案三:所答非所问,继续求详细指点.解决方案四:这个对于展示的话就是用递归而在数据库设计的时候,则在每条记录存一个他上级的id,页面的话,再加点样式.可能就是页面比较麻烦.后台没有什么东西.用js+css写也行,就是很麻烦.解决方案五:简单的

vc2010-csdn多高手大神,跪求指点:directshow库中的atlbase.h文件是不是有bug啊?

问题描述 csdn多高手大神,跪求指点:directshow库中的atlbase.h文件是不是有bug啊? 用vc2010开发的工程,使用了atlbase.h头文件,但是编译的时候总是提示:"T"标识符未声明! 顺着错误提示,找到是769行:NoAddRefReleaseOnCComPtr* operator->() const { ATLASSERT(p!=NULL); return (_NoAddRefReleaseOnCComPtr*)p; } 这里的T转到声明(转到定义也

遍历-求用C语言实现下面问题 新手求指点~谢谢~

问题描述 求用C语言实现下面问题 新手求指点~谢谢~ 假设图中数据元素类型是字符型,请采用邻接矩阵或邻接表实现图的以下基本操作: (1)构造图(包括有向图.有向网.无向图.无向网): (2)根据深度和广度优先遍历图. 解决方案 包括有向图.有向网.无向图.无向网,根据深度和广度优先遍历图.http://blog.csdn.net/creazyapple/article/details/7949064http://blog.csdn.net/lwwworkspace/article/details

c语言-C语言文件读取问题,求帮忙看看

问题描述 C语言文件读取问题,求帮忙看看 想用程序实现输入一个人姓名和电话号码并写入文件,然后读取显示文件中的数据. 但输出如图:输出最后两个重复,不知是哪里出错,求大神帮忙看看. 程序代码如下: #include #include #include #include typedef struct man { char name[20]; char first_name[20]; long phone_number; } man; int main(void) { FILE* pfile=NUL

缓冲区-C语言数组溢出问题求指点

问题描述 C语言数组溢出问题求指点 #include #define N 5 main() { int i,a[N]; for(i=0;i<N;i++) a[N]=i; for(i=0;i<N;i++) printf("%5d",a[N]); printf(" "); } 在第六行 警告 1 warning C4789: 缓冲区"a"(大小为 20 字节)将溢出:4 字节将在偏移 20 时开始写入 Run-Time Check Fai