2013-06-17 3 views
1

Здравствуйте я занимаюсь разработкой базы данных dbmain с 2 таблицами мой кодСоздание базы данных с 2 таблицы Ios

NSString *docsDir; 
NSArray *dirPaths; 
dirPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 


// docsDir=[dirPaths objectAtIndex:0]; 
docsDir = dirPaths[0]; 
databasePath=[[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@"dbDare.db"]]; 

NSFileManager *filemgr=[NSFileManager defaultManager]; 


if([filemgr fileExistsAtPath:databasePath]==NO) 
{ 
    const char *dbpath=[databasePath UTF8String]; 
    if(sqlite3_open(dbpath, &contactDB)==SQLITE_OK) 
    { 
     char *errMsg; 
     const char *sql_stmt = 
     "CREATE TABLE IF NOT EXISTS tblUser(ID INTEGER PRIMARY KEY AUTOINCREMENT, StrName TEXT,Strusername TEXT)"; 
     if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK) 
     { 



      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed to create table" 
                  message:@"Failed to create table" 
                  delegate:nil 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
      //status.text = @"Failed to create table"; 
     } 



      char *errMsg1; 
      const char *sql_stmt1 = 
      "CREATE TABLE IF NOT EXISTS tblVanish (ID INTEGER PRIMARY KEY AUTOINCREMENT, strfilepath TEXT,datesaved TEXT)"; 
      if (sqlite3_exec(contactDB, sql_stmt1, NULL, NULL, &errMsg1) != SQLITE_OK) 
      { 

       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed to create table" 
                   message:@"Failed to create table" 
                   delegate:nil 
                 cancelButtonTitle:@"OK" 
                 otherButtonTitles:nil]; 
       [alert show]; 
       [alert release]; 
       //status.text = @"Failed to create table"; 
      } 
      sqlite3_close(contactDB); 
    } else { 
     // status.text = @"Failed to open/create database"; 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed to create open/create database" 
                 message:@"Failed to create open/create database" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 

} 

после добавления записи в таблицу я могу увидеть строки с помощью Лита программного обеспечения но когда retriving строки с помощью этого кода

const char *dbpath=[databasePath UTF8String]; 
int iVal=0; 
    sqlite3_stmt *statement; 
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK) 
{ 
    NSString *querySQL = @"SELECT Strusername FROM tblUser"; 
    const char *query_stmt = [querySQL UTF8String]; 

    if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) 
    { 
     if (sqlite3_step(statement) == SQLITE_ROW) 
     { 
      while (sqlite3_step(statement) == SQLITE_ROW) { 

       strname = [NSString stringWithFormat:@"Welcome %@" ,[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)]]; 
      } 



     } else { 

     } 
     sqlite3_finalize(statement); 
    } 
    sqlite3_close(contactDB); 
} 

я не в состоянии принести любую вещь, так как нет ни в одной строке отображается внутри таблицы с использованием ИОС, но я могу видеть строки внутри таблицы с помощью Лита пожалуйста, предложите, где я получаю этот неправильный

+0

Я бы рекомендовал использовать [FMDB] (https://github.com/ccgus/fmdb), очень приятно оболочка для sqlite. Хороший [учебник] (http://www.highoncoding.com/Articles/836_Persisting_iOS_Application_Data_in_SQLite_Database_Using_FMDB.aspx) – Anupdas

ответ

3

Где вы копируете файл базы данных в каталог документов?

И это условие выглядит очень странно для меня:

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

Если база данных не существует там, почему бы не скопировать его в документ каталог?

Также вы создаете таблицу внутри этого условия, означает, что вы пытаетесь создать таблицу в несуществующем файле db.

Возможно, вы хотите скопировать файл db, тогда вам нужно создать таблицы.

Или

Вы должны изменить условия, как:

if([filemgr fileExistsAtPath:databasePath]== YES) 
+0

Да db хранится в каталоге документов – Rahul

+0

@Rahul: вы уверены, что db есть? Если да, то это не сработает (потому что ваше условие не соответствует действительности, пожалуйста, проверьте мой ответ) –

+0

My db находится в каталоге документов, который я проверил, он был создан в разделе/​​Users/Rahul/Library/Application Support/iPhone Simulator/6.1/Applications/AA3FE47D-A062-4631-9E0A/Documents/path – Rahul

Смежные вопросы