0

現在、データをプルできるテーブルがあります。テーブルがバンドルにすでに存在するかどうかを確認し、存在しない場合は、テーブルを作成してバンドルに保存します(つまり、パスはメインバンドルにあります)。setInputメソッドの先頭でデータベースをチェックして作成したいと思います。私はこれに似たものを求めてSOを精査してきましたが、まだ何も思いつきません。どんな助けでも大歓迎です。これが私のコードです:

-(IBAction)setInput:(id)sender
{
    NSString *strStoreNumber;
    NSString *strRegNumber;

    strStoreNumber = StoreNumber.text;
    strRegNumber = RegNumber.text;
    lblStoreNumber.text = strStoreNumber;
    lblRegNumber.text = strRegNumber;

    NSString* databasePath = [[NSBundle mainBundle] pathForResource:@"tblStore" ofType:@"sqlite"];

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
    {
        NSLog(@"Opened sqlite database at %@", databasePath);
        sqlite3_exec(database, "CREATE TABLE IF NOT EXISTS tblStore (ID INTEGER PRIMARY KEY AUTOINCREMENT, Message TEXT)", NULL, NULL, NULL);
        //...stuff
    } 
    else 
    {
        NSLog(@"Failed to open database at %@ with error %s", databasePath, sqlite3_errmsg(database));
        sqlite3_close (database);
    }
//    
    NSString *querystring;

    // create your statement
    querystring = [NSString stringWithFormat:@"SELECT strStore, strReg FROM tblStore WHERE strStore = %@ AND strReg = %@;", strStoreNumber, strRegNumber];  

    const char *sql = [querystring UTF8String];

    NSString *szStore = nil;
    NSString *szReg = nil;

    sqlite3_stmt *statement = nil;
    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL)!=SQLITE_OK) //queryString = Statement
    {
        NSLog(@"sql problem occured with: %s", sql);
        NSLog(@"%s", sqlite3_errmsg(database));
    }
    else
    {
        // you could handle multiple rows here
        while (sqlite3_step(statement) == SQLITE_ROW) 
        {            
            szStore = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)];
            szReg = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)];
        }        

    }

    sqlite3_finalize(statement);

    lblStoreNumber.text = szStore;
    lblRegNumber.text = szReg;

//   
} 

私はまだiOSとSQLiteに慣れていないので、私がやろうとしていることについて十分に正確な説明を提供しなかった場合は、私に知らせてください。より具体的にしようと思います。ありがとう!

4

2 に答える 2

5

「存在しない場合はiphonesqlcreate table」をすばやく検索すると、これが最上位の結果として表示されます。

SQLのこの部分は、おそらくあなたが探しているものです。

CREATE TABLE IF NOT EXISTS tableName( ... )

テーブルがまだ存在しない場合は作成します。

于 2012-05-07T15:39:55.737 に答える
0

sqliteswiftを使用してテーブルを作成します

func createTable(_ tableName:String) {
        sqlStatement = "CREATE TABLE \(tableName)(Id TEXT,Details BLOB,Type TEXT)"
        if sqlite3_prepare_v2(database, sqlStatement,-1, &compiledStatement, nil) == SQLITE_OK {
            if sqlite3_step(compiledStatement) == SQLITE_DONE {
                print("table created")
            }
            else {
                print("table could not be created")
            }
        }
        else {
            print("Create table statement could not be prepared")
        }
        sqlite3_finalize(compiledStatement)
    }
于 2019-06-01T07:24:24.967 に答える