日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlite学习

發布時間:2024/10/12 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlite学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一鼓作氣,今天繼續學習了sqlite數據庫在Xcode上的一些操作,主要是通過用oc代碼進行salite表格的創建,刪除,修改;以及對現有的表格數據進行增,刪,改,查。雖然有點累,但是收獲不小,感覺很充實,繼續加油!

? ? ??

//把數據庫sqlite3導入到工程(在Bulider Phrase 中的Linker中點擊?號,查找sqlite3文件,選擇再添加即可)

? ? //打開數據庫

? ? //提供C的字符串,c串時我們要打開數據庫的完整路徑和文件名

? ? NSString *path=NSHomeDirectory();//獲得家的路徑

? ? path=[path stringByAppendingPathComponent:@"mydb.sqlite"];

? ? NSLog(@"%@",path);

? ? sqlite3 *db;

? ? //打開數據庫,如果沒有這個數據庫,就創建這個數據庫的文件并且打開這個數據庫,如果有這個數據庫就直接打開該數據庫

? ? sqlite3_open([path UTF8String], &db);

? ? int result=sqlite3_open([path UTF8String], &db);

? ? //判斷打開數據庫是否成功

? ? if (result!=SQLITE_OK) {

? ? ? ? NSLog(@"打開失敗!");

? ? }

? ? //關閉數據庫

? ? sqlite3_close(db);

?? ?

? ? //提供C的字符串,c串時我們要打開數據庫的完整路徑和文件名

? ? NSString *path1=NSHomeDirectory();//獲得家的路徑

? ? path1=[path1 stringByAppendingPathComponent:@"mydb.sqlite"];

? ? sqlite3 *mydb;//創建一個數據庫名叫mydb

? ? //打開數據庫,如果沒有這個數據庫,就創建這個數據庫的文件并且打開這個數據庫,如果有這個數據庫就直接打開該數據庫

?? ? sqlite3_open([path UTF8String], &mydb);

? ? //對數據庫進行操作

? ? //定制一個sql表

? ? char *sql="create table if not exists t_student(name text,age integer)";

? ? char *err;//出錯信息

? ? //運行sql,并返回運行結果

? ? result=sqlite3_exec(mydb, sql, NULL, NULL, &err);

? ? //判斷運行是否成功

? ? if (result!=SQLITE_OK) {

? ? ? ? NSLog(@"運行sql錯誤,error原因:%s",err);

? ? }

?? /*

? ? //增

? ? NSString *name=self.nameText.text;

? ? NSString *age=self.ageText.text;

? ? //sql="insert into t_student(name,age) values('張三',22) ";

? ? NSString *sql1=[NSString stringWithFormat:@"insert into t_student(name,age) values('%@',%@)",name,age];

? ? //將OC的字符串轉化為C字符串

? ? //[sql1 UTF8String];

? ? //運行sql,并返回運行結果

? ? result=sqlite3_exec(mydb,[sql1 UTF8String],NULL,NULL,&err);

? ? if (result!=SQLITE_OK)

? ? {

? ? ? ? NSLog(@"運行sql錯誤,error原因:%s",err);

? ? }

?? ? */

? ? /*

? ? //增,(可以插入特殊字符,用綁定的方式)

? ? NSString *name=self.nameText.text;

? ? NSString *age=self.ageText.text;

? ? char *sql2="insert into t_student(name,age) values(?,?) ";

? ? sqlite3_stmt *stmt;//stmt本身為指向行的指針,故該定義為一個指向指針的指針,即表示一個二維數組

? ? //運行sql,并返回運行結果

? ? result=sqlite3_prepare_v2(mydb,sql2,-1,&stmt,NULL);

? ? if (result==SQLITE_OK)

? ? {

?? ? ? // 綁定參數

? ? ? ? result=sqlite3_bind_text(stmt, 1, [name UTF8String],-1, NULL);

? ? ? ? //判斷綁定姓名是否成功

? ? ? ? if (result!=SQLITE_OK) {

? ? ? ? ? ? NSLog(@"綁定姓名失敗!!!");

? ? ? ? }

? ? ? ? // 綁定參數

? ? ? ? result=sqlite3_bind_int(stmt, 2, [age intValue]);

? ? ? ? //判斷綁定姓名是否成功

? ? ? ? if (result!=SQLITE_OK) {

? ? ? ? ? ? NSLog(@"綁定年齡失敗!!!");

? ? ? ? }

? ? }

? ? if (sqlite3_step(stmt)!=SQLITE_DONE)

? ? {

? ? ? ? NSLog(@"插入數據失敗!!!");

? ? }

? ? sqlite3_finalize(stmt);

? ? */

?? ?

?? /*

? ? //刪

? ? sql="delete from t_student where age=26";

? ? //運行sql,并返回運行結果

? ? result=sqlite3_exec(mydb, sql, NULL, NULL, &err);

? ? //判斷運行是否成功

? ? if (result!=SQLITE_OK) {

? ? ? ? NSLog(@"運行sql錯誤,error原因:%s",err);

? ? }

? ? */

? ? /*

? ? //刪除,用綁定的方式

? ? NSString *name=self.nameText.text;

? //NSString *age=self.ageText.text;

? ? sqlite3_stmt *stmt;

? ? char * sql3="delete from t_student where name=?";

? ? //運行sql,并返回運行結果

? ? result=sqlite3_prepare_v2(mydb, sql3, -1, &stmt, NULL);

? ? //判斷運行是否成功

? ? if (result==SQLITE_OK)

? ? {

? ? ? ? // 綁定參數

? ? ? ? result=sqlite3_bind_text(stmt, 1, [name UTF8String],-1, NULL);

? ? ? ? //判斷綁定姓名是否成功

? ? ? ? if (result!=SQLITE_OK) {

? ? ? ? ? ? NSLog(@"綁定姓名失敗!!!");

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? // 綁定參數

? ? ? ? result=sqlite3_step(stmt);

? ? ? ? //判斷綁定姓名是否成功

? ? ? ? ? ? if(result!=SQLITE_DONE)

?? ? ? ? ? ? {

?? ? ? ? ? ? ? NSLog(@"刪除失敗!!!");

? ? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? else

? ? {

? ? ? ? NSLog(@"綁定失敗!!!");

? ? }

? ? sqlite3_finalize(stmt);

?? ? */

? ? /*

? ? //改

? ? sql="update t_student set name='趙六' where age=22 ";

? ? //運行sql,并返回運行結果

? ? result=sqlite3_exec(mydb, sql, NULL, NULL, &err);

? ? //判斷運行是否成功

? ? if (result!=SQLITE_OK)

? ? {

? ? ? ? NSLog(@"運行sql錯誤,error原因:%s",err);

? ? }

?? ? */

? ? //修改,用綁定的方式

? ? char *sql4="update t_student set name=? where age=?";

? ? NSString *name=self.nameText.text;

? ? NSString *age=self.ageText.text;

? ? BOOL bFlag=NO;

? ? sqlite3_stmt *stmt;

? ? result=sqlite3_prepare_v2(mydb, sql4 , -1, &stmt ,NULL);

? ? if (result==SQLITE_OK) {

? ? ? ? result=sqlite3_bind_text(stmt, 1, [name UTF8String], -1, NULL);

? ? ? ? if (result!=SQLITE_OK) {

? ? ? ? ? ? NSLog(@"綁定姓名失敗!!!");

? ? ? ? ? ? bFlag=YES;

? ? ? ? }

? ? ? ? result=sqlite3_bind_int(stmt, 2, [age intValue]);

? ? ? ? if (result!=SQLITE_OK) {

? ? ? ? ? ? NSLog(@"綁定年齡失敗!!!");

? ? ? ? ? ? bFlag=YES;

? ? ? ? }

? ? ? ? if (bFlag==NO) {

? ? ? ? ? ? result=sqlite3_step(stmt);

? ? ? ? ? ? if (result!=SQLITE_DONE) {

? ? ? ? ? ? ? ? NSLog(@"修改失敗!!!");

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? else

? ? {

? ? ? ? NSLog(@"預處理失敗(準備運行失敗 )!!!");

? ? }

? ? //查

?? ?

? ? sql="select * from t_student";

? ? result=sqlite3_prepare_v2(mydb, sql , -1, &stmt ,NULL);

? ? if (result==SQLITE_OK)

? ? {

? ? ? ? //遍歷返回的結構

? ? ? ? while(sqlite3_step(stmt)==SQLITE_ROW)//的到返回結構的一行

? ? ? ? {

? ? ? ? ? ? char*name=(char*)sqlite3_column_text(stmt, 0);//的到返回結構的一列,其中0代表第一列,依次類推

? ? ? ? ? ? int age=sqlite3_column_int(stmt, 1);//的到返回結果的第二列

? ? ? ? ? ? NSString *strname=[NSString stringWithUTF8String:name];

? ? ? ? ? ? NSLog(@"name=%@,age=%d",strname,age);

? ? ? ? }

? ? }

? ? else

? ? {

? ? ? ? NSLog(@"預處理失敗");

? ? }

? ? sqlite3_finalize(stmt);//釋放層數占用的資源

? ? sqlite3_close(mydb);

轉載于:https://www.cnblogs.com/kl137754356/p/5995831.html

總結

以上是生活随笔為你收集整理的sqlite学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。