首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sqlite3 step == SQLITE_ROW不为我工作

Sqlite3 step == SQLITE_ROW不为我工作
EN

Stack Overflow用户
提问于 2014-01-23 18:08:14
回答 2查看 350关注 0票数 1

因为我对Xcode还不熟悉,所以不知道如何解决这个问题。请帮我解决实际问题。

建立数据库连接,执行查询,但在执行查询后,我总是得到消息为:结果未找到。:(

代码语言:javascript
复制
- (void)viewDidLoad
{
    NSString *MyDirectory;
    NSArray *DirectoryPaths;
    // Get the documents directory
    DirectoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    MyDirectory = [DirectoryPaths objectAtIndex:0];
    // Build the path to the database file
    MyDBPath = [[NSString alloc]initWithString: [MyDirectory stringByAppendingPathComponent:@"mydb.db"]];
    //Status.text = MyDBPath;
    const char *Database = [MyDBPath UTF8String];
    if (sqlite3_open(Database, &MyConnection) == SQLITE_OK)
    {
        Status.text = @"Build Connection Successfully...!";
    }
    else
    {
        Status.text = @"Failed to open database...!";
    }
    [super viewDidLoad];
}


- (void) Find
{
    const char *Database = [MyDBPath UTF8String];
    sqlite3_stmt    *SQLStatement;
    NSString *Query;
    if (sqlite3_open(Database, &MyConnection) == SQLITE_OK)
    {
        Query = [NSString stringWithFormat:@"SELECT EmpName FROM EmpLogin WHERE          EmpID=\"%@\"",MyText.text];
        if (sqlite3_prepare_v2(MyConnection, [Query UTF8String], 0, &SQLStatement, nil) == SQLITE_OK)
        {
            while (sqlite3_step(SQLStatement) == SQLITE_ROW)
            {
                NSString *Name = [[NSString alloc]
                                  initWithUTF8String:(const char *) sqlite3_column_text(SQLStatement, 0)];
                TextResult.text = Name;
            }
            if (TextResult.text.length > 0)
            {
                Status.text = @"Result found";
            }
            else
            {
                NSLog(@"%s", sqlite3_errmsg(MyConnection));
                Status.text = @"Result not found";
                TextResult.text = @"";
            }
            sqlite3_finalize(SQLStatement);
        }
        else
        {
            //NSString *decode = [[NSString alloc]initWithCString:Query_Stmt encoding:NSUTF8StringEncoding];
            //Status.text = decode;
            Status.text = @"Query execution Failed...!";
        }
        sqlite3_close(MyConnection);
    }
}

Sqlite3_step(SQLStatement) == SQLITE_ROW __ nor

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-25 11:17:54

是的,我解决了这个问题,…!实际上,我只是将目录的路径更改为直接到我的DB路径。这是我的最后和工作代码…不管怎样,谢谢@HotLick,,,@CL。*))

这就像一个魅力…:)

代码语言:javascript
复制
- (void) Find
{
MyDBPath = @"/Users/zaibi/Documents/IOSProjects/mydb.db";
MyDatabase = [MyDBPath UTF8String];
sqlite3_stmt    *SQLStatement;
NSString *Query;
//NSString *decode = [[NSString alloc]initWithCString:Database encoding:NSUTF8StringEncoding];
//NSLog(@"%@",decode);
if (sqlite3_open(MyDatabase, &MyConnection) == SQLITE_OK)
{
    Query = [NSString stringWithFormat:@"SELECT EmpName FROM EmpLogin WHERE EmpID=\"%@\"",MyText.text];
    if (sqlite3_prepare_v2(MyConnection, [Query UTF8String], -1, &SQLStatement, nil) == SQLITE_OK)
    {
        if (sqlite3_step(SQLStatement) == SQLITE_ROW)
        {
            NSString *Name = [[NSString alloc]
                              initWithUTF8String:(const char *) sqlite3_column_text(SQLStatement, 0)];
            TextResult.text = Name;
            Status.text = @"Result found";
        }
        else
        {
            NSLog(@"%s", sqlite3_errmsg(MyConnection));
            Status.text = @"Result not found";
            TextResult.text = @"";
        }
        sqlite3_finalize(SQLStatement);
    }
    else
    {
        NSLog(@"%s", sqlite3_errmsg(MyConnection));
        Status.text = @"Query execution Failed...!";
    }
    sqlite3_close(MyConnection);
}

}

而这种访问DB的方式只是混淆了…:/

代码语言:javascript
复制
NSString *MyDirectory;
NSArray *DirectoryPaths;
// Get the documents directory
DirectoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
MyDirectory = [DirectoryPaths objectAtIndex:0];
// Build the path to the database file
MyDBPath = [[NSString alloc]initWithString: [MyDirectory stringByAppendingPathComponent:@"mydb.db"]];
//Status.text = MyDBPath;
票数 2
EN

Stack Overflow用户

发布于 2014-01-24 17:13:45

有时阅读文献资料会有所帮助

如果nByte参数小于零,则将zSql读入第一个零终止符。如果nByte是非负的,那么它就是从zSql读取的最大字节数.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21316073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档