使用select&使用sqlite3 db插入查询

时间:2011-10-18 16:17:01

标签: objective-c ios4 sqlite

我有一个登录页面,用户必须输入用户名&用于访问应用程序的密码,用户可以在第一时间输入任何用户名和密码。用户愿望的密码。

第一种情景:

我第一次需要将登录详细信息插入数据库

第二种情景:

当用户第二次登录时,我需要从db中选择用户详细信息,而不是再次插入。

我在登录按钮操作中正在进行上述两项操作。

请帮助我了解如何实现这个过程

感谢。

2 个答案:

答案 0 :(得分:2)

对于此应用流程,您需要创建一个包含4个字段的表格。

1.id 2.username 3.password 4.flag(默认值为0)

然后向用户名和密码字段添加一些转储值,除了flag(for flag = 0)。之后,您需要将sqliteDB复制到应用程序中。

第一次需要从ur db中选择用户名密码和标志。 然后检查flag的值,如果flag = 0,则更新username,password和flag = 1的值。

第二次再次检查标志字段并转到else部分,您需要在文本字段中与输入的用户名和密码进行比较。如果存在,则他是有效用户,否则他不是有效用户

答案 1 :(得分: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;
}

对于插入数据,您可以使用几乎相同的代码但不返回值,因此如果您需要,方法将返回void或某些控制值,并且只有在执行时有错误,而sql语句将类似于

插入用户(UserLogin,UserPassword)值('%@','%@')