2011-10-18 69 views
0

我有一個登錄頁面,用戶必須輸入用戶名&的密碼才能訪問該應用程序,第一次用戶可以輸入任何用戶名的密碼&。使用sqlite3選擇和插入查詢db

第一種方案:

我第一次需要插入登錄信息到數據庫

第二種情景:

當用戶登錄,我需要選擇用戶詳細信息,第二次從數據庫而不是再次插入。

上面2個操作我在做登錄按鈕操作。

請幫助我如何實現過程

感謝。

回答

0

首先用NSString userName和userPassword創建自定義類UserDetails。

那麼你可以嘗試這樣的事情來讀取數據

- (UserDetails *)getUserDetails:(NSString *)userLogin password:(NSString *)userPassword 
{ 
    UserDetails *retVal; 

    sqlite3 *database; 

     NSString *dbPath = @"your_db_path"; 

    if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK){ 

     const char *sql_statement = [[NSString stringWithFormat:@"select * from Users where UserLogin = '%@' and UserPassword = '%@'", userLogin, userPassword] UTF8String]; 

     sqlite3_stmt *compiled_statement;  

     if(sqlite3_prepare_v2(database, sql_statement, -1, &compiled_statement, NULL) == SQLITE_OK){ 

      while(sqlite3_step(compiled_statement) == SQLITE_ROW){ 
       [retVal setUsername:[NSString stringWithUTF8String:(const char *)sqlite3_column_text(compiled_statement, 0)]]; 

       [retVal setPassword:[NSString stringWithUTF8String:(const char *)sqlite3_column_text(compiled_statement, 1)]]; 

      } 

      sqlite3_finalize(compiled_statement); 
      sqlite3_close(database); 

     } 

    } 

    return retVal; 
} 

而且插入數據,您幾乎可以使用相同的代碼,但沒有返回值,所以如果你需要它的方法將返回無效或部分控制值只有當你在執行錯誤,而將SQL語句像

插入到用戶(用戶登陸,userPassword的)VALUES(「%@」,「%@」)

+0

但我想要在一個方法或一個操作中完成2個操作?第一次插入選項應該執行,從下次只有選擇操作應該工作。 – Santosh

+0

然後你可以添加,如果選擇返回0記錄你執行sql查詢插入相同的數據作爲新的記錄 –

2

對於您的應用的這種流動你需要創建一個有4個字段的表格。

1.id 2.username 3.password 4.flag(默認值爲0)

然後一些轉儲值添加到用戶名和密碼字段,除了標誌(用於標誌= 0)。之後,您需要將該sqliteDB複製到應用程序中。

您第一次需要從ur數據庫中選擇用戶名密碼和標誌。 然後檢查標誌的值,如果標誌= 0,則更新用戶名,密碼和標誌= 1的值。

第二次再次檢查標誌字段並轉到else部分,在那裏您需要與文本框中輸入的用戶名和密碼進行比較。如果存在,他是一個有效的用戶,否則他不是有效的用戶