sqlite數據庫的操作

-fno-objc-arc

- (void)viewDidLoad

{

    [superviewDidLoad];

   

 //創建數據庫保存登錄信息

   NSString *docsDir;

   NSArray *dirPaths;


    // Get the documents directory NSString *databasePath; sqlite3 *contactDB;

    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);


    

    docsDir = [dirPathsobjectAtIndex:0];

    

    // Build the path to the database file

    databasePath = [[NSStringalloc] initWithString: [docsDirstringByAppendingPathComponent: @"contacts.db"]];

    NSLog(@"表名%@",NSHomeDirectory());

    NSFileManager *filemgr = [NSFileManagerdefaultManager];


   if ([filemgr fileExistsAtPath:databasePath] ==NO) {

       const char *dbpath = [databasePathUTF8String];

       if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) {

           char *errMsg;

            constchar *sql_stmt ="CREATE TABLE IF NOT EXISTS CONTACTS(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT,PASSWORD TEXT,STATE BOOL)";

           if (sqlite3_exec(contactDB, sql_stmt,NULL, NULL, &errMsg)!=SQLITE_OK) {

               NSLog(@"創建表失敗");

            }

           else{

               sqlite3_stmt *statement;

                NSString *insertSQL = [NSStringstringWithFormat:@"INSERT INTO CONTACTS (name,password,state) VALUES(\"%@\",\"%@\",\"%d\")",@"",@"",0];

               const char *insert_stmt = [insertSQLUTF8String];

               sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement,NULL);

               if (sqlite3_step(statement)==SQLITE_DONE) {

                   NSLog(@"以存儲到數據庫");

                }

               sqlite3_finalize(statement);

            }

            

           sqlite3_close(contactDB);

        }

       else{

           NSLog(@"創建./打開數據庫失敗");

        }

       m_isChecked = FALSE;

       _login_name.text =@"";

       _login_psw.text =@"";

        

        

    }

   else{

       sqlite3_stmt *statement;

       const char *dbpath = [databasePathUTF8String];

       if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK)

        {

           //執行查詢

            NSString *query =@"SELECT NAME, PASSWORD, STATE FROM CONTACTS";

            //sqlite3_stmt *statement;

           if (sqlite3_prepare_v2(contactDB, [queryUTF8String], -1, &statement,nil) == SQLITE_OK) {

                //依次讀取數據庫表格FIELDS中每行的內容,並顯示在對應的TextField

               if (sqlite3_step(statement) ==SQLITE_ROW) {

                   //獲得數據

                   m_isChecked = sqlite3_column_int(statement,2);

                   char *rowNameData = (char *)sqlite3_column_text(statement,0);

                   char *rowpasswordData = (char *)sqlite3_column_text(statement,1);

                   //設置文本

                   _login_name.text = [[NSStringalloc] initWithUTF8String:rowNameData];

                   _login_psw.text = [[NSStringalloc] initWithUTF8String:rowpasswordData];

                }

               sqlite3_finalize(statement);

            }

           else{

               NSLog(@"duqu失敗");

            }

            

        }

        sqlite3_close(contactDB);

       //

       if (!m_isChecked) {

           _login_name.text =@"";

           _login_psw.text =@"";

        }

    }


按鈕執行的方法

sqlite3_stmt *statement;

   const char *dbpath = [databasePathUTF8String];

   if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) {

        NSString *insertSQL = [NSStringstringWithFormat:@"UPDATE CONTACTS SET name=\"%@\",password=\"%@\", state=%d",_login_name.text,_login_psw.text,m_isChecked];

       const char *insert_stmt = [insertSQLUTF8String];

       sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement,NULL);

       if (sqlite3_step(statement)==SQLITE_DONE) {

           NSLog(@"以存儲到數據庫");

            //                _login_name.text = @"";

            //                _login_psw.text =@"";

           NSLog(@"%@",_login_name.text);

           NSString *userName = _login_name.text;

           NSString *userPassword = _login_psw.text;

            [[NSUserDefaultsstandardUserDefaults] setValue:userNameforKey:@"userName"];

            [[NSUserDefaultsstandardUserDefaults] setValue:userPassword forKey:@"userPassword"];

        }

       else{

           NSLog(@"保存失敗");

        }

       sqlite3_finalize(statement);

        sqlite3_close(contactDB);

    }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章