Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用选择&;使用sqlite3db插入查询_Objective C_Ios4_Sqlite - Fatal编程技术网

Objective c 使用选择&;使用sqlite3db插入查询

Objective c 使用选择&;使用sqlite3db插入查询,objective-c,ios4,sqlite,Objective C,Ios4,Sqlite,我有一个登录页面,用户必须输入用户名和密码才能访问应用程序,这是用户第一次可以输入用户希望的任何用户名和密码 第一种情况: 第一次我需要将登录详细信息插入数据库 第二种情况: 当用户第二次登录时,我需要从数据库中选择用户详细信息,而不是再次插入 我在登录按钮操作中所做的上述两个操作 请帮助我如何实现这个过程 谢谢 首先使用NSString userName和userPassword创建自定义类UserDetails 然后您可以尝试这样的方法来读取数据 - (UserDetails *)getUs

我有一个登录页面,用户必须输入用户名和密码才能访问应用程序,这是用户第一次可以输入用户希望的任何用户名和密码

第一种情况:

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

第二种情况:

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

我在登录按钮操作中所做的上述两个操作

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


谢谢

首先使用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)中插入值(“%@”、“%@”)

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

1.id 2.用户名 3.密码 4.标志(默认值为0)

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

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


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

但我希望两个操作在一个方法或一个操作中完成?第一次插入选项应该执行,从下一次开始,只有选择操作应该起作用。然后,您可以添加,如果选择返回0条记录,则执行sql查询,插入与新记录相同的数据