2013-08-18 34 views
-1

好吧,您好朋友,我正在開發一個應用程序,從大學畢業是一個應用程序的注意客人在酒店,我正在開發此應用程序與SQLite只用於交付,審查和專業考試。好吧,我去了,我用我的應用程序暴露了我的麻煩。我想和與SQLite的登錄表單中的觀點,我與代表SQLite的映射連接我的應用程序,以及我做了以下代表如何在xcode中使用SQLite創建登錄表單?

NSObject的Clientes.h

https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-ash3/556777_10151551691796497_1416281912_n.jpg

Clientes.m

https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-ash3/545217_10151551692776497_1449567220_n.jpg

ClientesDAO.h

我的班申報SQLite的聲明 https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-prn1/561311_10151551694516497_2084358913_n.jpg

ClientesDAO.m

這就是我想要做的指令使用SQLite訪問

https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-prn2/1186271_10151551698251497_1167100817_n.jpg

現在,這是我的登錄表單 的viewController

https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-frc1/578401_10151551701756497_715584886_n.jpg

對象申報登錄表單 文本字段

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/q71/s720x720/1185494_10151551713896497_357700394_n.jpg

按鈕

https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-prn1/q71/s720x720/1148956_10151551717261497_1133856952_n.jpg

好吧,這裏

https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-ash3/525711_10151551724561497_30550793_n.jpg

- (IBAction)Acceso:(id)sender{ 

    NSInteger psswd = [txtPass.text integerValue]; 

    [dao LogIn:psswd]; 
    ElMenuViewController *viaje = [self.storyboard instantiateViewControllerWithIdentifier:@"ElMenu"]; 

    [self.navigationController pushViewController:viaje animated:YES]; 
} 

我的問題是,我不想更改視圖,當我觸摸按鈕時,應用程序沒有更改視圖或語句向我發送錯誤。 我不知道改變視圖到另一個視圖,但不是與segues代碼,或者如果你可以請推薦我一些其他方法來使用sqlite的登錄表單。 對不起我的英文不好我用谷歌翻譯U.U 感謝您的閱讀和幫助我!謝謝:D

+0

您應該剪切並粘貼實際的代碼示例(就像您使用'Acceso'方法),不要使用指向屏幕快照的鏈接。 – Rob

回答

0

您的登錄例程執行SELECT語句,將結果添加到NSMutableArray,但您對這些結果不做任何處理。你不想檢查結果並返回一些值(例如BOOL是否表示登錄是否成功)?你不想讓你的Acceso方法檢查這個結果,以確定它是否應該推動到viaje控制器嗎?


輕微的技術問題,但你必須在你的LogIn方法的錯誤,在你有一個while循環和if聲明如下所示:

while (sqlite3_step(...) == SQLITE_ROW) 
{ 
    // add objects 
} 

if (sqlite3_step(...) == SQLITE_DONE) 
{ 
    sqlite3_finalize(...); 
    sqlite3_close(bd); 
} 

這是不正確的。你不應該做這個額外的sqlite3_step。它應該是:

while (sqlite3_step(...) == SQLITE_ROW) 
{ 
    // add objects 
} 

sqlite3_finalize(...); 
sqlite3_close(bd); 

或者,更好:

int rc; 
while ((rc = sqlite3_step(...)) == SQLITE_ROW) 
{ 
    // add objects 
} 

if (rc != SQLITE_DONE) 
    NSLog(@"Problem in step: %s", sqlite3_errmsg(bd)); 

sqlite3_finalize(...); 
sqlite3_close(bd); 

注意,在這個例子中,當我遇到一個錯誤,我登錄sqlite3_errmsg。我建議你在檢測到錯誤時也這樣做。沒有sqlite3_errmsg,你不會知道問題是什麼。

+0

好的,謝謝,那麼我如何使用我的代碼創建登錄表單? u.u謝謝! – Rodrigo

+0

@Rodrigo將'LogIn'方法從'void'返回類型更改爲'BOOL'返回類型,並根據您是否找到匹配的記錄返回適當的值,並且您的'Acceso'方法應檢查此返回值確定是繼續推送新的控制器,還是應該顯示一些登錄失敗消息。 – Rob

+0

好吧,對不便之處,而不是一個UIbutton(acceso)的方法,我可以做一個有條件的賽格? uu對不起,我noob – Rodrigo

相關問題