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查询,插入与新记录相同的数据