sqlite环境下的数据库

8 篇文章 0 订阅
7 篇文章 0 订阅
sqlite3数据库之处女作
By—it_zujun

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <string.h>
#define     LEN     20
#define     TAB_NAME "room"
#define     SIZE    1024
sqlite3 *db = NULL;
char** result;
char buffer[1024];          //send buffer to Android
int nx, ny;
char* errmsg;
int ret;
char tab[20];               //sql command sqace
char a[7] = {'"', '"', '(', ')', ',', ';', '*'};
char* create_tab_name(char tab[20]);     //build  tab command tab[20]
void create_tab(sqlite3* db);            //do create_tab command
char* cmd_insert(char tab[20],char* device, char* status);
char* sql_insert(char* device, char* status);
char* cmd_delete(char tab[20], char* device);
void sql_delete(char* device);
char*  sql_to_android(char tab[20]);

char*  sql_to_android(char tab[20])
{
    int i, j;
    memset(tab, 0, LEN);
    strcat(tab, "select * from room");
    ret = sqlite3_get_table(db, tab, &result, &ny, &nx,&errmsg);
    if (ret != SQLITE_OK)
        printf("serch the room data failed\n");
    else
        printf("serch thr room data succeed\n");

    printf("nx = %d\n", nx);
    printf("ny = %d\n", ny);

    memset(buffer, 0, SIZE);
    strcat(buffer,"R");
    
    for(i = 1; i< ny+1; i++)
    {
        strcat(buffer,":");
        for (j=0; j< nx; j++)
        {
            strcat(buffer, result[i*nx+j]);
        }
    }

/*    for (i= nx; i<(ny+1)*nx; i++)
    {
        strcat(buffer,":");
        strcat(buffer, result[i]);
        printf("string: %s\n",result[i]);
    }
 */
    printf("send_to_android: %s\n", buffer);
    
}

char* cmd_update(char* device, char* sta)
{
    memset(tab, 0, LEN);
    strcat(tab,"update room set sta = ");
    strncat(tab, &a[0], 1);
    strcat(tab, sta);
    strncat(tab, &a[0], 1);
    strcat(tab, " where device = ");
    strncat(tab, &a[0], 1);
    strcat(tab,device);
    strncat(tab, &a[0], 1);
    strncat(tab, &a[5], 1);
    printf("string = %s\n", tab);
    return tab;
}

void sql_update(char* device, char* sta)
{
    cmd_update(device, sta);
    ret = sqlite3_exec(db, tab, NULL,NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("sql update failed\n");
    else 
        printf("sql update succeed\n");
    return;
}

char* cmd_search(char tab[20], char* device)
{
    /*
     select * from room where device = %s
     */
    memset(tab, 0, LEN);
    strcat(tab, "select * from room where device = ");
    strcat(tab, device);
    printf("string: %s\n",tab);
    return tab;
}

void sql_search(char* device)
{
    ret = sqlite3_exec(db, tab, NULL,NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("sql search failed\n");
    else 
          printf("sql search succeed\n");
    return;
}

char* cmd_delete(char tab[20], char* device)
{
    memset(tab, 0, LEN);
    strcat(tab, "delete from room where device = ");
    strcat(tab, device);
    printf("string: %s\n", tab);
    return tab;
}

void sql_delete(char* device)
{
    cmd_delete(tab, device);
    ret = sqlite3_exec(db, tab, NULL,NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("sql delete failed\n");
    else
        printf("sql delete succeed\n");
    return;
}

char* cmd_insert(char tab[20],char* device, char* status)
{
    memset(tab, 0, LEN);
    strcat(tab, "insert into room values");
    strncat(tab, &a[2], 1); // (
    strncat(tab, &a[0], 1); // "
    strcat(tab, device);    // device
    strncat(tab, &a[1], 1); // "
    strncat(tab, &a[4], 1); // ,
    strncat(tab, &a[0], 1); // "
    strcat(tab, status);    // status
    strncat(tab, &a[1], 1); // "
    strncat(tab, &a[3], 1); // )
    strncat(tab, &a[5], 1); // ;
    return tab;
}

char* sql_insert(char* device, char* status)
{
  cmd_insert(tab, device, status);
  ret = sqlite3_exec(db, tab, NULL,NULL, &errmsg);
  if (ret != SQLITE_OK)
      printf("sql insert failed\n");
  else 
      printf("sql insert successe\n");
  return;
}

void tab_insert(sqlite3* db, char* device, char* status)
{
    ret = sqlite3_exec(db, tab, NULL,NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("create room tab failed\nyou have created tab !!!!!!\n");
    else 
        printf("crate root tab succeed\n");
}

char* create_tab_name(char tab[20])
{
    memset(tab, 0, LEN);
    strcat(tab,"create table ");
    strcat(tab, TAB_NAME);
    strcat(tab, "(device varchar(2), sta varchar(1));");
    return tab;
}

void create_tab(sqlite3* db)
{
    create_tab_name(tab);
    ret = sqlite3_exec(db, tab, NULL,NULL, &errmsg);
    if (ret != SQLITE_OK)
    {
        printf("create room tab failed\nyou have created tab !!!!!!\n");
    } else {
        printf("crate root tab succeed\n");
    }
    return;
}

int main(int argc, char *argv[])
{
    ret = sqlite3_open("uwan.db", &db);
    if (SQLITE_OK != ret)
    {
        printf("open uwan.db failed\n");
        exit(0);
    } else {
        printf("open uwan.db succeed\n");
    }

    create_tab(db);
    sql_insert("11","N");
    sql_insert("12","N");
    sql_insert("13","N");
    sql_insert("14","F");
    sql_insert("15","F");

  //  sql_delete("14");

    cmd_search(tab, "11");
    sql_to_android(tab);
    sql_update("13", "F");
    sql_search("12");
    sqlite3_close(db);
    printf("close uwan.db succed\n");
    
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值