SQLite

Posted ruanchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLite相关的知识,希望对你有一定的参考价值。

python接口开发:

import sqlite3

def createTable(conn):
    sql_create = ‘‘‘
    CREATE TABLE IF NOT EXISTS employees (
    id INT PRIMARY KEY NOT NULL,
    name TEXT NOT NULL,
    salary REAL
    )‘‘‘

    try:
        conn.execute(sql_create)
        return 0
    except:
        return 1

def insert(conn, id, name, salary):
    sql_insert = ‘‘‘
    INSERT INTO 
        employees(id, name, salary)
    SELECT
        ?, ?, ?
    WHERE NOT EXISTS(SELECT * FROM employees WHERE id=?)
    ‘‘‘

    try:
        conn.execute(sql_insert, (id, name, salary, id))
        print "insert a line of data successfully"
        return 0
    except:
        print "insert a line of data failed ! id = ", id
        return 1

def select(conn, id):
    sql_select = ‘‘‘
    SELECT 
    id, name, salary
    FROM
    employees
    WHERE
    id = ?
    ‘‘‘

    cursor = conn.execute(sql_select, (id,))
    print "select a line of data successfully"
    return cursor

def delete(conn, id, name, salary):
    sql_insert = ‘‘‘
    DELETE FROM 
    employees
    ‘‘‘

    try:
        conn.execute(sql_insert)
        print "delete data successfully"
    except:
        print "delete data failed ! "

# open or create database
conn = sqlite3.connect("employee.db")
print "Open database successfully"

if(0==createTable(conn)):
    print "createTabe successfully"
else:
    print "createTabe failed"
    conn.close()
    exit(-1)

delete(conn, 1, "rc", 4.0)
cursor = select(conn, 1)
print list(cursor)
cursor = select(conn, 2)
print list(cursor)

insert(conn, 1, "rc", 4.0)
insert(conn, 2, "mario", 0.0)
insert(conn, 2, "mario-mario", 0.0)

cursor = select(conn, 2)
print list(cursor)

print list(conn.execute("SELECT * FROM employees"))

# must commit, then the data will be written to database
conn.commit()
print "commit successfully"
conn.close()
print "close database successfully"

 

C接口开发:

官方sqlite3库下载地址:https://www.sqlite.org/download.html

四个基础API:

int sqlite3_open(
  const char *filename,   /* Database filename */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
/*
打开/创建数据库文件的API,第一个参数是文件路径及名字,第二个参数是sqlite3操作句柄。如果数据库文件不存在就创建一个,并且会返回一个数据库操作句柄,保存到第二个参数中。操作成功,返回值为SQLITE_OK.
*/

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 */
);
/*
执行sql语句。第一个参数,打开的数据库操作句柄。第二个参数,sql语句,就是我们要执行的命令。第三个参数,回调函数。第四个参数,传入回调函数的参数。第五个参数,保存操作失败时的错误信息。操作成功,返回值为SQLITE_OK.
*/

void sqlite3_free(void *);
/*
释放申请的动态内存了,在上一个API操作中,假设出现操作失败,错误信息保存在最后一个参数中,它的内存是动态申请的,这时候就要通过这个函数释放内存了。
*/

int sqlite3_close(sqlite3 *);
/*
关闭数据库。第一个参数就是sqlite3操作句柄。一般在结束或出错时调用,用来关闭数据库。
*/

 

以上是关于SQLite的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段

SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

如果我想从另一个片段中添加书签,为啥我的书签单词没有保存到 sqlite 数据库?