首先设计一个带 IP地址、端口号、用户名、密码 四个输入框及连接、查询等按钮的界面的iOS程序,然后引入要连接MySQL数据库需要的文件:include
mysql库文件(下载地址:http://download..net/source/3425857)和libmysqlclient.a文件(下载地址:http://download..net/source/3425860)。
然后添加一个实现连接mysql数据库及对数据库进行相关操作的方法的类。其实现连接mysql数据库及对数据库进行相关操作的方法的实现如下:
[objc] view
plaincopy
//连接数据库
[objc] view
plaincopy
-(void)connectHost:(NSString*)hostconnectUser:(NSString*)userconnectPassword:(NSString*)passwordconnectName:(NSString*)name
{
myconnect = mysql_init(nil);
//新增。设置编码(解决中文乱码问题)
mysql_options(myconnect, MYSQL_SET_CHARSET_NAME, "gb2312");
myconnect = mysql_real_connect(myconnect,[hostUTF8String],[userUTF8String],[passwordUTF8String],[nameUTF8String],MYSQL_PORT,NULL,0);
if(!myconnect)
{
printf("error code=%i",mysql_errno(myconnect));
return;
}
NSLog(@"connected to Mysql");
}
[objc] view
plaincopy
[objc] view
plaincopy
//查询数据库中数据,参数sql既为SQL查询语句(@"select name from table1"),返回SQL语句查询到的结果,我理解的是recordArr中存放的是每组数据(每个column)中查询到的结果,而recordsArray中存放的是recordArr,即有几个column就有几个recorder。
-(NSMutableArray*)query:(NSString*)sql
{
if(!myconnect)
{
NSLog(@"Please connect first");
returnnil;
}
NSMutableArray*recordsArray = [[[NSMutableArrayalloc]init]autorelease];
mysql_query(myconnect, [sqlUTF8String]);
MYSQL_RES* result = mysql_store_result(myconnect);
intnum_rows = mysql_num_rows(result);
intnum_fields = mysql_num_fields(result);
for(inti=0;i
{
MYSQL_ROW row = mysql_fetch_row(result);
NSMutableArray*recordArr = [[NSMutableArrayalloc]init];
for(intj=0;j
{
//最新修改,解决中文乱码问题
//中文简体编码:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)
//NSString* value= [NSString stringWithUTF8String:row[j]];
NSString* value= [NSStringstringWithCString:row[j]encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)];
[recordArraddObject:value];
}
[recordsArrayaddObject:recordArr];
[recordArrrelease];
}
returnrecordsArray;
}
[objc] view
plaincopy
//断开数据库连接
[objc] view
plaincopy
- (void)disconnect
{
mysql_close(myconnect);
NSLog(@"Close From Mysql");
}
[objc] view
plaincopy
[objc] view
plaincopy
//修改数据库中的数据(无返回值)。删除、增加数据都可以调用此方法。
[objc] view
plaincopy
-(void)update:(NSString*)sql
{
if(myconnect)
{
mysql_query(myconnect, [sqlUTF8String]);
}
else
{
NSLog(@"Please connect to DB first");
return;
}
}
[objc] view
plaincopy
//连接按钮处理方法
[objc] view
plaincopy
-(void)btnConnectTapped:(id)sender
{
NSLog(@"%@",ipText.text);
NSLog(@"%@",duankouTextField.text);
NSLog(@"%@",nameTextField.text);
NSLog(@"%@",passwordTextField.text);
mysqlManager = [[MysqlManageralloc]init];
[mysqlManagerconnectHost:[NSStringstringWithFormat:@"%@",ipText.text]connectUser:nameTextField.textconnectPassword:passwordTextField.textconnectName:@"wgjchm"];
}
[objc] view
plaincopy
[objc] view
plaincopy
//查询按钮处理方法
[objc] view
plaincopy
-(IBAction)queryButtonTapped:(id)sender
{
//插入数据
[objc] view
plaincopy
[mysqlManagerupdate:@"insert into fdgg values(5,'hc',1,80,0)"];
[objc] view
plaincopy
//查询数据
NSMutableArray*res = [mysqlManagerquery:@"select name from fdgg"];
NSLog(@"%d",res.count);
for(inti =0; i
{
NSMutableArray*record = [resobjectAtIndex:i];
for(intj =0; j
{
//value既为查询到的name值
[objc] view
plaincopy
NSString*value = [recordobjectAtIndex:j];
NSLog(@"value=%@",value);
}
[objc] view
plaincopy
//断开连接
[mysqlManagerdisconnect];
}
注:如果是连本地数据库IP地址为:127.0.0.1或localhost 端口号默认为:3306(但不全是,要视情况而定)