0

我有一个从MySQL导出的 .sql 文件。我正在尝试将该表结构添加到SQLite中,FMDB framework但它始终没有被执行return false。这是结构:

CREATE TABLE IF NOT EXISTS `admin` (
`admin_id` tinyint(4) NOT NULL AUTO_INCREMENT,
`first_name` varchar(30) NOT NULL,
`last_name` varchar(30) NOT NULL,
`email` varchar(30) NOT NULL,
`password` varchar(30) NOT NULL,
`date` datetime DEFAULT NULL,
`status` tinyint(2) NOT NULL,
PRIMARY KEY (`admin_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

我在这里做错了什么?

4

3 回答 3

1

您正在尝试在另一个数据库中使用 MySQL 扩展。

您至少应该将admin_idtype替换为INTEGER,替换AUTO_INCREMENTAUTOINCREMENT,并删除ENGINEandDEFAULT CHARSET设置。

于 2013-09-09T07:29:31.480 回答
1

该 SQL 不符合在线记录CREATE TABLE的 SQLite语法。如果您查看 FMDB方法(类似于),它将报告有关错误的详细信息。lastErrorMessagesqlite3_errmsg

值得注意的是,AUTO_INCREMENT语法不正确。即使您解决了这个问题,ENGINEandDEFAULT CHARSET选项也不会被识别。至少,您必须尝试以下操作:

NSString *sql = @"CREATE TABLE IF NOT EXISTS `admin` ("
                "`admin_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
                "`first_name` varchar(30) NOT NULL,"
                "`last_name` varchar(30) NOT NULL,"
                "`email` varchar(30) NOT NULL,"
                "`password` varchar(30) NOT NULL,"
                "`date` datetime DEFAULT NULL,"
                "`status` tinyint(2) NOT NULL"
                ")";

或者,鉴于 SQLite 无法理解其中的某些数据类型(尽管使用 SQLite 的“动态类型系统”,这并不重要),您可能希望用您计划存储日期的任何格式替换varchar(30)TEXT替换tinyint(2)。请参阅数据类型讨论。INTEGERdatetime

于 2013-09-09T07:30:30.533 回答
-1
  • (IBAction)findContact:(UIButton *)sender {

    const char *dbPath = [databasePath UTF8String]; sqlite3_stmt *语句;

    if (sqlite3_open(dbPath, &contactDB)== SQLITE_OK) { NSString *querySQL = [NSString stringWithFormat:@"SELECT ADDRESS,PHONE FROM CONTACTS WHERE NAME = \"%@\"",_name.text]; const char *query_stmt = [querySQL UTF8String]; if(sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL)== SQLITE_OK) {

        if (sqlite3_step(statement)== SQLITE_ROW) {
    
            NSString *addressField = [[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
            _address.text = addressField;
            NSString *phoneField = [[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];
            _phoneNo.text = phoneField;
            _status.text = @"Match Found";
        }else{
            _status.text = @"Match not found";
            _address.text = @"";
            _phoneNo.text = @"";
        }
        sqlite3_finalize(statement);
    }
    sqlite3_close(contactDB);
    }
    

}

于 2016-12-16T00:18:02.833 回答