首先设计一个带 IP地址、端口号、用户名、密码 四个输入框及连接、查询等按钮的界面的 iOS 程序,然后引入要连接 MySQL 数据库 需要的文件:include mysql库文件和libmysqlclient.a文件。
然后添加一个实现连接mysql数据库及对数据库进行相关操作的方法的类。其实现连接mysql数据库及对数据库进行相关操作的方法的实现如下:
[objc]
- //连接数据库
[objc]
1. -(void)connectHost:(NSString *)host connectUser:(NSString *)user connectPassword:(NSString *)password connectName:(NSString *)name
2. {
3.
4. nil);
5. //新增。设置编码(解决中文乱码问题)
6. "gb2312");
7. UTF8String],[user UTF8String],[password UTF8String],[name UTF8String],MYSQL_PORT,NULL,0);
8.
9. if(!myconnect)
10. {
11. "error code=%i",mysql_errno(myconnect));
12. return;
13. }
14.
15. @"connected to Mysql");
16. }
[objc]
1. //查询数据库中数据,参数sql既为SQL查询语句(@"select name from table1"),返回SQL语句查询到的结果,我理解的是recordArr中存放的是每组数据(每个column)中查询到的结果,而recordsArray中存放的是recordArr,即有几个column就有几个recorder。
2. -(NSMutableArray*)query:(NSString *)sql
3. {
4. if(!myconnect)
5. {
6. @"Please connect first");
7. return nil;
8. }
9. NSMutableArray *recordsArray = [[[NSMutableArray alloc] init] autorelease];
10.
11. UTF8String]);
12. MYSQL_RES* result = mysql_store_result(myconnect);
13. int num_rows = mysql_num_rows(result);
14. int num_fields = mysql_num_fields(result);
15.
16. for(int i=0;i<num_rows;i++)
17. {
18. MYSQL_ROW row = mysql_fetch_row(result);
19. NSMutableArray *recordArr = [[NSMutableArray alloc] init];
20.
21. for(int j=0;j<num_fields;j++)
22. {
23. //最新修改,解决中文乱码问题
24. //中文简体编码:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)
25. //NSString* value= [NSString stringWithUTF8String:row[j]];
26. stringWithCString:row[j] encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)];
27. addObject:value];
28. }
29.
30. addObject:recordArr];
31. release];
32. }
33. return recordsArray;
34. }
[objc]
- //断开数据库连接
[objc]
1. - (void)disconnect
2. {
3. mysql_close(myconnect);
4. @"Close From Mysql");
5. }
[objc]
- //修改数据库中的数据(无返回值)。删除、增加数据都可以调用此方法。
[objc]
1. -(void)update:(NSString *)sql
2. {
3. if(myconnect)
4. {
5. UTF8String]);
6. }
7. else
8. {
9. @"Please connect to DB first");
10. return;
11. }
12. }
[objc]
- //连接按钮处理方法
[objc]
1. -(void)btnConnectTapped:(id)sender
2. {
3. @"%@",ipText.text);
4. @"%@",duankouTextField.text);
5. @"%@",nameTextField.text);
6. @"%@",passwordTextField.text);
7. alloc]init];
8. connectHost:[NSString stringWithFormat:@"%@",ipText.text] connectUser:nameTextField.text connectPassword:passwordTextField.text connectName:@"wgjchm"];
9. }
[objc]
- //查询按钮处理方法
[objc]
1. -(IBAction)queryButtonTapped:(id)sender
2. {
3. //插入数据
[objc]
- [mysqlManager update:@"insert into fdgg values(5,'hc',1,80,0)"];
[objc]
1. //查询数据
2. NSMutableArray *res = [mysqlManager query:@"select name from fdgg"];
3.
4. NSLog(@"%d",res.count);
5. for(int i = 0; i < [res count]; ++i)
6. {
7. NSMutableArray *record = [res objectAtIndex:i];
8. for(int j = 0; j < [record count]; ++j)
9. {
10. //value既为查询到的name值
[objc]
1. NSString *value = [record objectAtIndex:j];
2. @"value=%@",value);
3. }
[objc]
1. //断开连接
2. disconnect];
3. }
注:如果是连本地数据库IP地址为:127.0.0.1或localhost 端口号默认为:3306(但不全是,要视情况而定)
然后添加一个实现连接mysql数据库及对数据库进行相关操作的方法的类。其实现连接mysql数据库及对数据库进行相关操作的方法的实现如下:
[objc]
- //连接数据库
[objc]
1. -(void)connectHost:(NSString *)host connectUser:(NSString *)user connectPassword:(NSString *)password connectName:(NSString *)name
2. {
3.
4. nil);
5. //新增。设置编码(解决中文乱码问题)
6. "gb2312");
7. UTF8String],[user UTF8String],[password UTF8String],[name UTF8String],MYSQL_PORT,NULL,0);
8.
9. if(!myconnect)
10. {
11. "error code=%i",mysql_errno(myconnect));
12. return;
13. }
14.
15. @"connected to Mysql");
16. }
[objc]
1. //查询数据库中数据,参数sql既为SQL查询语句(@"select name from table1"),返回SQL语句查询到的结果,我理解的是recordArr中存放的是每组数据(每个column)中查询到的结果,而recordsArray中存放的是recordArr,即有几个column就有几个recorder。
2. -(NSMutableArray*)query:(NSString *)sql
3. {
4. if(!myconnect)
5. {
6. @"Please connect first");
7. return nil;
8. }
9. NSMutableArray *recordsArray = [[[NSMutableArray alloc] init] autorelease];
10.
11. UTF8String]);
12. MYSQL_RES* result = mysql_store_result(myconnect);
13. int num_rows = mysql_num_rows(result);
14. int num_fields = mysql_num_fields(result);
15.
16. for(int i=0;i<num_rows;i++)
17. {
18. MYSQL_ROW row = mysql_fetch_row(result);
19. NSMutableArray *recordArr = [[NSMutableArray alloc] init];
20.
21. for(int j=0;j<num_fields;j++)
22. {
23. //最新修改,解决中文乱码问题
24. //中文简体编码:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)
25. //NSString* value= [NSString stringWithUTF8String:row[j]];
26. stringWithCString:row[j] encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)];
27. addObject:value];
28. }
29.
30. addObject:recordArr];
31. release];
32. }
33. return recordsArray;
34. }
[objc]
- //断开数据库连接
[objc]
1. - (void)disconnect
2. {
3. mysql_close(myconnect);
4. @"Close From Mysql");
5. }
[objc]
- //修改数据库中的数据(无返回值)。删除、增加数据都可以调用此方法。
[objc]
1. -(void)update:(NSString *)sql
2. {
3. if(myconnect)
4. {
5. UTF8String]);
6. }
7. else
8. {
9. @"Please connect to DB first");
10. return;
11. }
12. }
[objc]
- //连接按钮处理方法
[objc]
1. -(void)btnConnectTapped:(id)sender
2. {
3. @"%@",ipText.text);
4. @"%@",duankouTextField.text);
5. @"%@",nameTextField.text);
6. @"%@",passwordTextField.text);
7. alloc]init];
8. connectHost:[NSString stringWithFormat:@"%@",ipText.text] connectUser:nameTextField.text connectPassword:passwordTextField.text connectName:@"wgjchm"];
9. }
[objc]
- //查询按钮处理方法
[objc]
1. -(IBAction)queryButtonTapped:(id)sender
2. {
3. //插入数据
[objc]
- [mysqlManager update:@"insert into fdgg values(5,'hc',1,80,0)"];
[objc]
1. //查询数据
2. NSMutableArray *res = [mysqlManager query:@"select name from fdgg"];
3.
4. NSLog(@"%d",res.count);
5. for(int i = 0; i < [res count]; ++i)
6. {
7. NSMutableArray *record = [res objectAtIndex:i];
8. for(int j = 0; j < [record count]; ++j)
9. {
10. //value既为查询到的name值
[objc]
1. NSString *value = [record objectAtIndex:j];
2. @"value=%@",value);
3. }
[objc]
1. //断开连接
2. disconnect];
3. }
注:如果是连本地数据库IP地址为:127.0.0.1或localhost 端口号默认为:3306(但不全是,要视情况而定)