iphone 数据库操作 (转载)
在iphone上,当我们需要将数据存入数据库时,有多种方法,但是如果所要存入得数据里面有特殊字符,例如:‘,%等时,我们采用一些方法插入数据库就会出错。因此一般情况下建议都使用绑定bind.
- (void ) InsertIntoDatabase:(CStationInfo
{
[ self OpenDatabase];
char *sql = "INSERT INTO Feature (id, name, slogan) VALUES (?, ?, ?)";
if ( sqlite3_prepare_v2 ( database, sql, - 1 , & insert_statement, NULL ) != SQLITE_OK )
{
Assert ( 0 , "Failed to prepare insert statement for '%s'.", sqlite3_errmsg ( database ));
}
sqlite3_bind_text( insert_statement , 1 , [[ NSString stringWithFormat: @"%d" , sInfo. stationID ] UTF8String],- 1 , SQLITE_TRANSIENT );
sqlite3_bind_text( insert_statement , 2 , [sInfo. name UTF8String], - 1 , SQLITE_TRANSIENT );
sqlite3_bind_text( insert_statement , 3 , [sInfo. slogan UTF8String], - 1 , SQLITE_TRANSIENT );
int32 success = sqlite3_step ( insert_statement);
sqlite3_reset ( insert_statement);
if (success != SQLITE_ERROR
{
NSLog ( @"insert is success");
}
else
{
NSLog ( @"insert is failse");
Assert ( 0 , "Failed to insert into database with message '%s'.", sqlite3_errmsg ( database ));
}
sqlite3_close( database );
}
需要从数据库中查询出来时,可以使用:
- (NSMutableArray
{
NSLog ( @"%%%%%%%%%%");
[ self OpenDatabase];
char * sql = "select * from Feature";
if (!list
[ list removeAllObjects];
}
if ( sqlite3_prepare_v2 ( database, sql, - 1 , & select_statement, nil )== SQLITE_OK )
{
while ( sqlite3_step ( select_statement)== SQLITE_ROW )
{
NSString * id = [ NSString stringWithUTF8String: ( char *) sqlite3_column_text( select_statement , 0 )];
NSString *name = [ NSString stringWithUTF8String: ( char *) sqlite3_column_text( select_statement , 1 )];
NSString *slogan = [ NSString stringWithUTF8String: ( char *) sqlite3_column_text( select_statement , 2 )];
CStationInfo *sInfo=[[CStationInfo alloc ] InitWithName :name slogan :slogan stationID :[id integerValue
list addObject
release
}
}
sqlite3_reset ( select_statement);
sqlite3_close( database );
return list ;
}
在此时需要注意得是:
绑定bind插入数据库 时,下标是从1开始
读取数据 时,下标是从0开始
而且,我们对
sqlite数据库 操作时,有
很多的限制
top 100 <=> limit 100
distinct 不能使用
















