Sqlite只在第一次启动应用程序时创建表

时间:2011-07-07 12:44:29

标签: ios ios4

我用sqlite3创建应用程序。我想只在第一次用户启动应用程序时创建应用程序表。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

您需要在AppDelegate

下执行此操作
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

您可能会先检查数据库是否存在:

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *databasePath = [documentsPath stringByAppendingPathComponent:@"Database.db"];

BOOL dbExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];

if (dbExists == NO) {
   //database doesn't exist
   //create your database here
    sqlite3* db;
    int error;
    if((error = sqlite3_open([databasePath UTF8String], &db)) != SQLITE_OK) {
       NSLog(@"sqlite3_open failed(%d) with %@", error, [databasePath UTF8String]);
       sqlite3_close(db);
    }
}

请参阅以下问题:iPhone create SQLite database at runtime?

这是另一个教程: http://dblog.com.au/iphone-development-tutorials/iphone-sdk-tutorial-reading-data-from-a-sqlite-database/

答案 1 :(得分:2)

我认为此应用程序代码可以帮助您。

package x.y;

import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class FirstDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button buttonX = (Button) findViewById(R.id.btn);
        buttonX.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                SQLiteDatabase db = openOrCreateDatabase("fd",
                        SQLiteDatabase.CREATE_IF_NECESSARY, null);

                db.execSQL("CREATE TABLE tbl1(col1 TEXT, col2 INTEGER)");

                ContentValues values = new ContentValues();

                values.put("col1", "Shaktimaan");
                values.put("col2", 420);

                db.insert("tbl1", null, values);

                db.close();
            }
        });
    }
}

答案 2 :(得分:1)

您可以在Sqlite3中创建表并保存扩展名sqlite。并且,在应用程序中导入应用程序中的数据库之后,将数据库保存在一个驱动器中。