Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 在命令窗口中查看sqlite3_stmt*_Objective C_Sqlite - Fatal编程技术网

Objective c 在命令窗口中查看sqlite3_stmt*

Objective c 在命令窗口中查看sqlite3_stmt*,objective-c,sqlite,Objective C,Sqlite,我继承了一个SQLite数据库,它的注释很差,我需要了解它正在查询和接收什么。有没有办法查看指针指向的值?它是否可以在printf()或NSLog()中打印到控制台 谢谢最好的方法是跟踪已编译的语句。在这个问题的帮助下,我找到了一个解决方案: sqlite3_trace命令触发回调,您需要自己编写回调代码。一旦打开跟踪,它将在程序的其余部分执行 我将所有数据库访问例程都放在一个类中,并将其用作回调函数(它是一个C函数,不是一个方法) 我在init数据库方法中打开了跟踪:一旦数据库打开,它就会打开

我继承了一个SQLite数据库,它的注释很差,我需要了解它正在查询和接收什么。有没有办法查看指针指向的值?它是否可以在
printf()
NSLog()中打印到控制台


谢谢

最好的方法是跟踪已编译的语句。在这个问题的帮助下,我找到了一个解决方案:

sqlite3_trace命令触发回调,您需要自己编写回调代码。一旦打开跟踪,它将在程序的其余部分执行

我将所有数据库访问例程都放在一个类中,并将其用作回调函数(它是一个C函数,不是一个方法)

我在init数据库方法中打开了跟踪:一旦数据库打开,它就会打开

-(void)initializeDatabase 
{
    NSString *path = [self createEditableCopyOfDatabaseIfNeeded];
    // open the db
    if (sqlite3_open([path UTF8String], &db) == SQLITE_OK)
        sqlite3_trace(db, traceCallback, NULL);
    else {
        // error - cleanup
        sqlite3_close(db);
        NSLog(@"Error opening db");
        NSLog(@"Path: %@",path);
    }
}
这将把带有绑定变量的SQL语句转换为字符串。 由此:

const char *sql2 = "select a.key, b.key from words a left outer join known_words b on a.key = b.word_id where a.word_foreign = :word_foreign";
为此:

{SQL} [select a.key, b.key from words a left outer join known_words b on a.key = b.word_id    where a.word_foreign = 'bak.']

最好的方法是跟踪编译后的语句。在这个问题的帮助下,我找到了一个解决方案:

sqlite3_trace命令触发回调,您需要自己编写回调代码。一旦打开跟踪,它将在程序的其余部分执行

我将所有数据库访问例程都放在一个类中,并将其用作回调函数(它是一个C函数,不是一个方法)

我在init数据库方法中打开了跟踪:一旦数据库打开,它就会打开

-(void)initializeDatabase 
{
    NSString *path = [self createEditableCopyOfDatabaseIfNeeded];
    // open the db
    if (sqlite3_open([path UTF8String], &db) == SQLITE_OK)
        sqlite3_trace(db, traceCallback, NULL);
    else {
        // error - cleanup
        sqlite3_close(db);
        NSLog(@"Error opening db");
        NSLog(@"Path: %@",path);
    }
}
这将把带有绑定变量的SQL语句转换为字符串。 由此:

const char *sql2 = "select a.key, b.key from words a left outer join known_words b on a.key = b.word_id where a.word_foreign = :word_foreign";
为此:

{SQL} [select a.key, b.key from words a left outer join known_words b on a.key = b.word_id    where a.word_foreign = 'bak.']