linux下的sqlite入門

安裝sqlite

  1. 拖動三個deb包 進入ubuntu 正常文件夾(非根目錄,非共享目錄)

  2. sudo dpkg -i *.deb

    sudo dpkg (deb 安裝包 debain linux 安裝包類型)

    *.deb 所有的 以deb結尾的文件

  3. sql 自動補齊(tab鍵) sqlite3 正常

  4. 進入 輸入 .quit爲退出

  5. 不行的話 輸個; (分號)提示錯誤以後 再輸第四步

使用sqlite

  1. 文檔 解壓 doc。zip 打開index.html

  2. sqlite3 + 文件名。db(類似於 vi) 自動保存

  3. 創建表格

sqlite>create table (f1 type1, f2 type2,…);

create table stu(NAME char(20),SEX char(20),C int,DS int,IO int,P int, NW int);

增刪改查

  1. 表格屬性

    .schema 查看錶格的屬性

  2. 插入表格

    insert into stu values(“jiangwenxiao”,”genzhiboy”,90,100,100,100,60);

  3. 查詢表格

    select * from stu;

    select * from stu where NW<=60;

  4. 刪除

    delete from stu where NAME=”jiangwenxiao”;

update stu set SEX=”woman” where NAME=”yanxiong”;

c語言調用 sqlite

1. 打開 sqlite

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);

2.編譯

gcc sqlite_test.c -lsqlite3

3. 執行

int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);

4. callback 函數 回調函數

int callback(void *NotUsed, int argc, char **argv, char **azColName)
  1. void * 是指 sqlite3_exec callback 後面的參數

  2. argc 滿足條件的返回結果的行乘以列 argc=行*列

  3. argv 結果的某個內容 “jiangwenxiao”

  4. azcolname 結果某個內容的表頭 NAME

#include <stdio.h>
#include <sqlite3.h>

int callback(void * notuse, int argc, char ** argv, char ** acolname)
{
    int i;
    for(i=0;i<argc;i++)
    {
        printf("colname: %s colvalue %s\n", acolname[i],argv[i]);

    }
    return 0;
}

int main(int argc, const char *argv[])
{
    sqlite3 * db;
    int ret;
    char *errormsg=0;
    ret=sqlite3_open("./test.db",&db);
    if(ret)
    {
        printf("fail to open db\n");
        return -1;

    }

    char *s="create table stu(NAME char(20),SEX char(20),C int,DS int,IO int,P int, NW int)";

    ret=sqlite3_exec(db,s,NULL,NULL,&errormsg);

    if(ret)
    {
        printf("fail to do exec: %s\n",errormsg);
        sqlite3_free(errormsg);

    }



    s="insert into stu values('jiangwenxiao','genzhiboy',90,100,100,100,60)";

    ret=sqlite3_exec(db,s,NULL,NULL,&errormsg);

    if(ret)
    {
        printf("fail to do exec: %s\n",errormsg);
        sqlite3_free(errormsg);

    }


    s="select * from stu";

    ret=sqlite3_exec(db,s,callback,NULL,&errormsg);

    if(ret)
    {
        printf("fail to do exec: %s\n",errormsg);
        sqlite3_free(errormsg);

    }


    sqlite3_close(db);

    return 0;
}
發佈了17 篇原創文章 · 獲贊 17 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章