如何将const char连接到const char?
问题描述:
我需要建立一个const char
其他const char
的字符串?如何将const char连接到const char?
const char *sql = "";
const char *sqlBuild = "";
for(int i=0; i < ac_count; ++i) {
if (![sqlBuild isEqualToString:@""]) {
sqlBuild = [sqlBuild stringByAppendingString:
[NSString stringWithUTF8String:@" UNION "]];
}
sql = [[NSString stringWithFormat:
@"select sum(price) from tmp%d where due >= date() and due <= '%@'",
i, strDBDate] cStringUsingEncoding:NSUTF8StringEncoding];
sqlBuild = [sqlBuild stringByAppendingString:
[NSString stringWithUTF8String:sql]];
}
//execute sql
我已经尝试过几次,但不能完全正确,继承人是我的最后一次尝试。正如你可以看到我试图建立一个SQL语句。
我哪里错了?
编辑 - 我正在使用不喜欢NSString的sql lite,见下文。
- (NSString*)getCategoryDesc:(int)pintCid {
NSString *ret = @"";
const char *sql = "select category from categories where cid = ?";
sqlite3 *database;
int result = sqlite3_open([[General getDBPath] UTF8String], &database);
if(result != SQLITE_OK)
{
DLog(@"Could not open db.");
}
sqlite3_stmt *statementTMP;
int error_code = sqlite3_prepare_v2(database, sql, -1, &statementTMP, NULL);
if(error_code == SQLITE_OK) {
sqlite3_bind_int(statementTMP, 1, pintCid);
if (sqlite3_step(statementTMP) == SQLITE_ROW) {
ret = [[NSString alloc] initWithUTF8String:
(char *)sqlite3_column_text(statementTMP, 1)];
}
}
sqlite3_finalize(statementTMP);
sqlite3_close(database);
return [ret autorelease];
}
答
有到转换没有任何好处,然后从一个UTF8字符串;在NSString中做所有事情并在最后将其转换为C风格的字符串会更有效率。 @"d"
语法也评估为一个对象,而不是C风格的字符串。
所以,你应该简化并更正代码:
NSMutableString *sqlStatement = [NSMutableString string];
for(int i=0; i < ac_count; ++i) {
if ([sqlStatement length]) [sqlStatement appendString:@" UNION "];
[sqlStatement appendFormat:
@"select sum(price) from tmp%d where due >= date() and due <= '%@'",
i, strDBDate];
}
// execute SQL string [sqlStatement UTF8String]
答
申报sqlBuild
是NSMutableString
并用它来建立你的字符串:
NSMutableString *sqlBuild = [NSMutableString string];
for (...) {
[sqlBuild appendString:...];
}
+0
见编辑,SQLite不喜欢的NSString的 – Jules
我使用SQLite,见上面,它不喜欢的NSString – Jules
就是为什么我说,执行[sqlStatement UTF8String],它返回一个C风格的字符串。 – Tommy