* insertsql&的语法错误* querysql阶段

时间:2013-06-04 12:23:44

标签: ios objective-c

- (BOOL) saveData:(NSString*)registerNumber name:(NSString*)name
                   department:(NSString*)department year:(NSString*)year;
   {
     const char *dbpath = [databasePath UTF8String];
     if (sqlite3_open(dbpath, &database) == SQLITE_OK)
   {
    //here syntax error comes..
     NSString *insertSQL = [NSString stringWithFormat:@ "insert into studentsDetail (regno,name, department, year) values ("\"%d\",\"%@\", \"%@\", \"%@\")",[registerNumber integerValue],name, department, year];
     const char *insert_stmt = [insertSQL UTF8String];
     sqlite3_prepare_v2(database, insert_stmt,-1, &statement, NULL);

     if (sqlite3_step(statement) == SQLITE_DONE)
        {
            return YES;
        }else {
            return NO;
        }
            sqlite3_reset(statement);
        }
            return NO;
        }

- (NSArray*) findByRegisterNumber:(NSString*)registerNumber
     {
        const char *dbpath = [databasePath UTF8String];
        if (sqlite3_open(dbpath, &database) == SQLITE_OK)
        {
          NSString *querySQL = [NSString stringWithFormat:"select name, department, year from studentsDetail where regno=\"%@\" ",registerNumber];
          const char *query_stmt = [querySQL UTF8String];
          NSMutableArray *resultArray = [[NSMutableArray alloc]init];

          if (sqlite3_prepare_v2(database,query_stmt, -1, &statement, NULL) == SQLITE_OK)
            {
                if (sqlite3_step(statement) == SQLITE_ROW)
                   {
                     NSString *name = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
                     [resultArray addObject:name];
                     NSString *department = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];
                     [resultArray addObject:department];
                     NSString *year = [[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 2)];
                     [resultArray addObject:year];
                     return resultArray;
                   }else{
                      NSLog(@"Not found");
                      return nil;
                    }
                    sqlite3_reset(statement);
                }
              }
            return nil;
         }

*insertsql & *querysql阶段的语法错误。 这里SQL表是动态创建的。插入的值在sql表上。我对SQL没有更多的了解。

2 个答案:

答案 0 :(得分:0)

使用此字符串

 NSString *insertSQL = [NSString stringWithFormat:@ "insert into studentsDetail (regno,name, department, year) values (\"\"%d\",\"%@\", \"%@\", \"%@\")",[registerNumber integerValue],
                                        name, department, year];

答案 1 :(得分:0)

使用此字符串。

NSString *insertSQL = [NSString stringWithFormat:@ "insert into studentsDetail (regno,name, department, year) values (\"%d\",\"%@\", \"%@\", \"%@\")",num,name, department, year];

我认为您在"之前添加了额外的\"%d\",所以我已经在我的字符串中将其删除了尝试,如果它有帮助。