当前位置: 首页 > news >正文

怎么看网站开发语言平面设计网上怎么接单

怎么看网站开发语言,平面设计网上怎么接单,开发app租用服务器价格,手机微信网站模板c语言与sqlite3入门 1 sqlite3数据类型2 sqlite3指令3 sqlite3的sql语法3.1 创建表create3.2 删除表drop3.3 插入数据insert into3.4 查询select from3.5 where子句3.6 修改数据update3.7 删除数据delete3.8 排序Order By3.9 分组GROUP BY3.10 约束 4 c语言执行sqlite34.1 下载… c语言与sqlite3入门 1 sqlite3数据类型2 sqlite3指令3 sqlite3的sql语法3.1 创建表create3.2 删除表drop3.3 插入数据insert into3.4 查询select from3.5 where子句3.6 修改数据update3.7 删除数据delete3.8 排序Order By3.9 分组GROUP BY3.10 约束 4 c语言执行sqlite34.1 下载c源码4.2 cmake编译运行 5 创建或打开数据库6 sqlite3_exec7 sqlite3_prepare7.1 sqlite3_prepare_v27.2 sqlite3_bind7.3 sqlite3_step7.4 sqlite3_column7.5 sqlite3_reset 8 读写blob型数据参考 1 sqlite3数据类型 NULL 空INTEGER 整形REAL 浮点TEXT 文本BLOB binary large object二进制对象一般存图像声音自定义结构体 2 sqlite3指令 sqlite3 test.db # 打开数据库 没有就创建.databases #查看所有的数据库位置。3 sqlite3的sql语法 3.1 创建表create CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL );3.2 删除表drop DROP TABLE COMPANY;3.3 插入数据insert into INSERT INTO COMPANY VALUES (7, James, 24, Houston, 10000.00 );或者 INSERT INTO COMPANY(id, name, age, address, salary) VALUES (7, James, 24, Houston, 10000.00 );用第二种更严谨一些 假如没有设置值为NULL或者0 INSERT INTO COMPANY(ID, name, age) VALUES (8, 张三, 11);3.4 查询select from SELECT ID, NAME, SALARY FROM COMPANY ;3.5 where子句 select * from与where name like a%都是会查询所有表的内容一般禁用。 逻辑与或子句 SELECT * FROM COMPANY WHERE AGE 25 OR SALARY 65000不为空 查询age不为空的记录 SELECT * FROM COMPANY WHERE AGE IS NOT NULL模糊查询 所有名字以ki开头的 SELECT * FROM COMPANY WHERE NAME LIKE Ki%;in 年龄为25或27的记录 SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );年龄不为25且不为27 SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );子查询 年龄大于所有65000薪水以上员工年龄的记录 SELECT * FROM COMPANY WHERE AGE (SELECT AGE FROM COMPANY WHERE SALARY 65000);3.6 修改数据update UPDATE COMPANY SET ADDRESS Texas WHERE ID 6;3.7 删除数据delete DELETE FROM COMPANY WHERE ID 7;3.8 排序Order By 其实默认就是升序ASC是升序DESC就是降序。 SELECTselect_list FROMtable ORDER BYcolumn_1 ASC,column_2 DESC;3.9 分组GROUP BY 比如可以按照年龄来分组看看不同年龄的平均薪资。 SELECT AGE, avg(SALARY) from COMPANY GROUP BY AGE;3.10 约束 CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL UNIQUE,AGE INT NOT NULL CHECK(AGE 0),ADDRESS CHAR(50),SALARY REAL DEFAULT 50000.00 );主键约束PRIMARY KEYID作为主键不能有重复值一般也不能为NULL。 NOT NULL: 不为空该列不能有NULL CEHCK 添加修改记录时需要符合check条件。 DEFAULT 设置默认值。 4 c语言执行sqlite3 4.1 下载c源码 打开 c源码sqlite3下载页面 下载其中的source code源码下第一个就好。 放入项目的sqlite文件夹中除开我已经创建的两个数据库项目结果应该长这样。 随便写一个c,获取sqlite3版本 #include stdio.h #include sqlite3.h int main(void) {printf(%s\n, sqlite3_libversion());return 0; }4.2 cmake编译运行 在CMakeLists.txt中写 cmake_minimum_required (VERSION 3.5)project(test) add_definitions(-Wall -g)include_directories (sqlite)add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/test.c ${PROJECT_SOURCE_DIR}/sqlite/sqlite3.c) target_link_libraries (${PROJECT_NAME} pthread dl)add_executable(sqliteShell ${PROJECT_SOURCE_DIR}/sqlite/shell.c ${PROJECT_SOURCE_DIR}/sqlite/sqlite3.c) target_link_libraries (sqliteShell pthread dl) 写好后cd打开build文件夹执行cmake和makefile cmake .. make # 再执行test ./test假如没有修改文件结构(增删文件/修改文件位置)只是修改了文件内容。 再次编译代码不需要再次运行cmake了运行make即可 make ./test5 创建或打开数据库 sqlite3_open函数打开数据库没有就创建一个。 第一个参数就是数据库位置相对位置是相对于程序执行时的位置不是c文件所在位置 第二个是双指针的通道 sqlite3 *db NULL; int rc sqlite3_open(../test.db, db);关闭 sqlite3_close(db);如下方就可以创建一个表并且插入一些值来使用 #include stdio.h #include sqlite3.h int main(void) {sqlite3 *db NULL;char *err_msg NULL;int rc sqlite3_open(../test.db, db);if(rc ! SQLITE_OK){fprintf(stderr, Cannot open database: %s\n, sqlite3_errmsg(db));sqlite3_close(db);return 1;}const char *sql DROP TABLE IF EXISTS Cars; CREATE TABLE Cars(Id INT, Name TEXT, Price INT); INSERT INTO Cars VALUES(1, Audi, 52642); INSERT INTO Cars VALUES(2, Mercedes, 57127); INSERT INTO Cars VALUES(3, Skoda, 9000); INSERT INTO Cars VALUES(4, Volvo, 29000); INSERT INTO Cars VALUES(5, Bentley, 350000); INSERT INTO Cars VALUES(6, Citroen, 21000); INSERT INTO Cars VALUES(7, Hummer, 41400); INSERT INTO Cars VALUES(8, Volkswagen, 21600);;rc sqlite3_exec(db, sql, NULL, NULL, err_msg);if(rc ! SQLITE_OK){fprintf(stderr, SQL error: %s\n, err_msg);sqlite3_free(err_msg);sqlite3_close(db);return 1;}sqlite3_close(db);return 0;}6 sqlite3_exec sqlite3_exec是执行sql语句的函数算是最重要的函数。 sqlite3*, //数据库 const char* sql,//sql语句 *callback, //回调 void* data, //回调的参数 char **errmsq //错误信息const char * SELECT * FROM car; char* dataName test; char *err_msg NULL; int rc sqlite3_exec(db, sql, callback, dataName, err_msg);int callback(void* para, int columnCount, char** columnValue, char** columnName){}callback在每查询到一行数据的时候就调用一次所以每次得到的是一行数据。 其中callback只能自己传一个参数但是自身有4个参数。 para 传来的参数columnCount 列数columnValue 一维的字符串数组保存的是每一列数据。columnName 一维字符串数组列名。 比如下方获取所有的test.db中的数据打印出来。 #include stdio.h #include sqlite3.hint callback(void *, int, char **, char **);int main(void) {sqlite3 *db NULL;char *err_msg NULL;int rc sqlite3_open(../test.db, db);if (rc ! SQLITE_OK) {fprintf(stderr, Cannot open database: %s\n, sqlite3_errmsg(db));sqlite3_close(db);return 1;}const char *sql SELECT * FROM Cars;char* dataName test;rc sqlite3_exec(db, sql, callback, dataName, err_msg);if (rc ! SQLITE_OK ) {fprintf(stderr, Failed to select data\n);fprintf(stderr, SQL error: %s\n, err_msg);sqlite3_free(err_msg);sqlite3_close(db);return 1;}sqlite3_close(db);return 0; }int callback(void* para, int columenCount, char** columnValue, char** columnName) {for (int i 0; i columenCount; i){printf(%s %s\n, columnName[i], (columnValue[i] ? columnValue[i] : NULL));}printf(\n);return 0; } 7 sqlite3_prepare exec使用起来简单它在执行的过程中有一个编译再执行的过程。 假如有多个insert语句exec需要每inset一次都需要编译一次效率低。 对于结构相同的语句我们是否可以先编译于是有了一个prepare先编译再插入变量执行。 最开始有一个控制变量sqlite3_stmt的句柄其中stmt的全称应该是statement。 sqlite3_stmt *pstmt;7.1 sqlite3_prepare_v2 先需要准备一个模板 int sqlite3_prepare_v2(sqlite3 *db, /* 数据库通道 */const char *zSql, /* sql语句 */int nByte, /* sql语句长度一般填入-1自动计算 */sqlite3_stmt **ppStmt, /* 准备语句的控制权柄 */const char **pzTail /* sql语句超出了nByte后存放位置一般把nByte设置足够大这个设置为NULL即可 */ );下面是一个模板的代码将插入语句设置为模板其中需要插入的内容用代替 sqlite3_stmt *pStmt NULL; char *pzTail NULL; const char *sql INSERT INTO person(name, age, sex) VALUES(?,?,?);; rc sqlite3_prepare_v2(pdb, sql, strlen(sql), pStmt, pzTail);用prepare语句后可以先编译。 7.2 sqlite3_bind 这个函数就是设置插入值。 有三个函数用于插入不同类型值。 int sqlite3_bind_int(sqlite3_stmt*, int, int); int sqlite3_bind_doubule(sqlite3_stmt*, int, double); int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int, void(*)(void*)); int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int, void(*)(void*))句柄handle需要赋值的是sql语句中的第几个参数从1开始。插入值text和blob是指针。插入值长度(strlen/sizeof)。绑定blob类型的析构函数一般可以设置为NULL 那么现在我们需要插入值来形成一个sql语句就可以这么写 const char * name iceylia; age 100; sex 未知; sqlite3_bind_text(pstmt, 1, name, strlen(name), NULL); sqlite3_bind_int(pstmt, 2, age); sqlite3_bind_text(pstmt, 3, sex, strlen(sex), NULL);7.3 sqlite3_step 插入值后执行sql语句用sqlite3_step rc sqlite3_step(pstmt);返回值有两个需要注意的返回值 SQLITE_DONE: 表示执行完毕SQLITE_ROW: 当使用select语句时会得到多个数据每次只能读取一行的值 比如获取表中所有参数需要多次使用sqlite3_step获取列。 const char *sql SELECT * FROM Cars;; const char *pzTail; rc sqlite3_prepare_v2(db, sql, -1, pStmt, pzTail); while(sqlite3_step(pStmt)SQLITE_ROW){printf(id %d\n, sqlite3_column_int(pStmt, 0)); }7.4 sqlite3_column 上面的示例代码中使用了sqlite3_column这是获取查询到的数据的函数 同样有三个第二个参数是列号从0开始。 int sqlite3_column_int(sqlite3_stmt*, int iCol); double sqlite3_column_double(sqlite3_stmt*, int iCol); const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);7.5 sqlite3_reset 将bind绑定的值全部取消清楚方便重新绑定 int sqlite3_reset(sqlite3_stmt *pStmt);这么做的目的就是在比如插入多个数据绑定了一个人的数据然后需要绑定第二个的时候需要清空statement。 8 读写blob型数据 读入 建表时定义一个blob插入时用statement插入 const char *newSql INSERT INTO Images(Data) VALUES(?); rc sqlite3_prepare_v2(db, newSql, -1, pStmt, NULL); sqlite3_bind_blob(pStmt, 1, data, sizeof(data), NULL);读取,也用statement读取用column读取。 myData *pData (myData*)sqlite3_column_blob(pStmt, 0);下面是一个完整的读取写入代码。 #include stdio.h #include sqlite3.h #include string.htypedef struct {int value1;double value2; } myData;int main(void) {sqlite3 *db NULL;char *err_msg NULL;int rc sqlite3_open(../test.db, db);if (rc ! SQLITE_OK){fprintf(stderr, Cannot open database: %s\n,sqlite3_errmsg(db));sqlite3_close(db);return 1;}const char *sql DROP TABLE IF EXISTS Images;CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);;rc sqlite3_exec(db, sql, NULL, NULL, err_msg);if (rc ! SQLITE_OK){fprintf(stderr, Failed to select data\n);fprintf(stderr, SQL error: %s, err_msg);sqlite3_free(err_msg);sqlite3_close(db);return 1;}sqlite3_stmt *pStmt NULL;const char *newSql INSERT INTO Images(Data) VALUES(?);rc sqlite3_prepare_v2(db, newSql, -1, pStmt, NULL);myData data {100, 0.156};sqlite3_bind_blob(pStmt, 1, data, sizeof(data), SQLITE_STATIC);rc sqlite3_step(pStmt);if (rc ! SQLITE_DONE){printf(execution failed: %s, sqlite3_errmsg(db));}sqlite3_finalize(pStmt);char *sql2 SELECT Data FROM Images WHERE Id 1;pStmt NULL;rc sqlite3_prepare_v2(db, sql2, -1, pStmt, NULL);if (rc ! SQLITE_OK ) {fprintf(stderr, Failed to prepare statement\n);fprintf(stderr, Cannot open database: %s\n, sqlite3_errmsg(db));sqlite3_close(db);return 1;} rc sqlite3_step(pStmt);int bytes 0;if (rc SQLITE_ROW){bytes sqlite3_column_bytes(pStmt, 0);}myData *pData (myData*)sqlite3_column_blob(pStmt, 0);printf(bytes: %d, %d, %lf\n, bytes, pData-value1, pData-value2);rc sqlite3_finalize(pStmt); sqlite3_close(db);return 0; } 参考 C语言操作SQLite3简明教程 深入理解SQLite3之sqlite3_exec及回调函数 玩转SQLite-11C语言高效API之sqlite3_prepare系列函数
http://www.dnsts.com.cn/news/130390.html

相关文章:

  • 长沙网站开发微联讯点官网棋牌游戏wordpress
  • 一款非常不错的seo网站优化公司源码建设公司查询网站首页
  • 如何做网站手机建设网站赚钱猛兽领主
  • 网站建设的核心是安溪学校网站建设
  • 游戏开服表网站开发超级外链
  • 建设部资质升级网站网站数据采集怎么做
  • 域名买了怎么做网站关于静态网站开发相关新闻
  • 网站开发地图板块浮动深圳市招投标中心官网
  • 广西微信网站建设湖北响应式网站建设
  • 指纹锁在什么网站做宣传好唐山培训网站建设
  • 信息网站建设方案上海市建设工程造价信息网
  • 如果用局域网做网站哪里有做网站公司
  • 平邑县建设局网站vs2015网站开发实例
  • cms建站系统免费徐州网架加工
  • 网站信息内容建设局通报东莞官方网站设计
  • 国外展柜网站凡客还在吗
  • 怎么给网站上传附件建设官方网站企业登录入口
  • 个人网站示例嘉兴网站制作网页
  • 网站开发流程的三个部分众筹网站建设 网站定制开发
  • 公众平台小程序肇庆网页关键词优化
  • dede微电影网站模板下载wordpress 做分销
  • 保定免费网站建站模板网站开发能进无形资产吗
  • wordpress 网站排名优化网站搜索不到了
  • 网站建设制作软件叫啥如何知道一个网站是用什么做的
  • 网站绝对路径301怎样自己做网络推广网站
  • 水果网站建设的策划书wordpress占用多大内存
  • 网站制作优质公司视频综合平台是什么
  • 电商总监带你做网站策划网页编辑pdf
  • 网站开发风险分析广州网络公司
  • 怎么看网站有没有收录知名的企业网站建设