以下函数用于检查表中是否存在特定条目。如果条目存在,则返回1.如果不存在,则返回0.但是,它只返回0.
使用的表:SAML_ATTRIBUTE_MAPPING = {
'uid': ('username', ),
'mail': ('email', ),
'cn': ('first_name', ),
'sn': ('last_name', ),
}
replace above with
SAML_ATTRIBUTE_MAPPING = {
'uid': ('username', ),
'mail': ('email', ),
'first_name': ('first_name', ),
'last_name': ('last_name', ),
}
,都是非NULL。 以下结果中显示的所有查询都在数据库中。
Database( ID int Primary Key, char(100) Place, char(100) Room )
结果:
//database is already open at this point
int searchForRoom(sqlite3 *db, char *place, char *room){
int result = 1;
sqlite3_stmt *stmt;
//Create SQL statement
char * sql = sqlite3_mprintf(
"Select EXISTS(Select * From Database "
"Where Place = '%q' and Room = '%q');"
, place, room);
sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
if (sqlite3_step(stmt) != SQLITE_ROW) {
printf("ERROR 1 reading data: %s\n", sqlite3_errmsg(db));
}
//only this line of code does not output the correct result
result = sqlite3_column_int(stmt, 0);
if (sqlite3_step(stmt) != SQLITE_DONE) {
printf("ERROR 2 reading data: %s\n", sqlite3_errmsg(db));
}
printf("%s, %s evals to %d\n", place, room, result);
sqlite3_finalize(stmt);
return result;
}
答案 0 :(得分:0)
"Select EXISTS(Select * From Database "
EXISTS查询返回0(当没有这样的行存在时)或1(当它们存在时)。它返回0,因此不存在这样的行。
答案 1 :(得分:0)
我不知道为什么或如何,但似乎重启我的电脑实际上解决了这个问题。该功能现在完美无缺。很抱歉浪费每个人的时间。