然后添加一個(gè)實(shí)現(xiàn)連接mysql數(shù)據(jù)庫(kù)及對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)操作的方法的類。其實(shí)現(xiàn)連接mysql數(shù)據(jù)庫(kù)及對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)操作的方法的實(shí)現(xiàn)如下:
[objc] view plain copy//連接數(shù)據(jù)庫(kù) [objc] view plain copy-(void)connectHost:(NSString *)host connectUser:(NSString *)user connectPassWord:(NSString *)password connectName:(NSString *)name { myconnect = mysql_init(nil); //新增。設(shè)置編碼(解決中文亂碼問(wèn)題) mysql_options(myconnect, MYSQL_SET_CHARSET_NAME, "gb2312"); myconnect = mysql_real_connect(myconnect,[host UTF8String],[user UTF8String],[password UTF8String],[name UTF8String],MYSQL_PORT,NULL,0); if(!myconnect) { PRintf("error code=%i",mysql_errno(myconnect)); return; } NSLog(@"connected to Mysql"); } [objc] view plain copy [objc] view plain copy//查詢數(shù)據(jù)庫(kù)中數(shù)據(jù),參數(shù)sql既為SQL查詢語(yǔ)句(@"select name from table1"),返回SQL語(yǔ)句查詢到的結(jié)果,我理解的是recordArr中存放的是每組數(shù)據(jù)(每個(gè)column)中查詢到的結(jié)果,而recordsArray中存放的是recordArr,即有幾個(gè)column就有幾個(gè)recorder。 -(NSMutableArray*)query:(NSString *)sql { if(!myconnect) { NSLog(@"Please connect first"); return nil; } NSMutableArray *recordsArray = [[[NSMutableArray alloc] init] autorelease]; mysql_query(myconnect, [sql UTF8String]); MYSQL_RES* result = mysql_store_result(myconnect); int num_rows = mysql_num_rows(result); int num_fields = mysql_num_fields(result); for(int i=0;i<num_rows;i++) { MYSQL_ROW row = mysql_fetch_row(result); NSMutableArray *recordArr = [[NSMutableArray alloc] init]; for(int j=0;j<num_fields;j++) { //最新修改,解決中文亂碼問(wèn)題 //中文簡(jiǎn)體編碼:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif) //NSString* value= [NSString stringWithUTF8String:row[j]]; NSString* value= [NSString stringWithCString:row[j] encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)]; [recordArr addObject:value]; } [recordsArray addObject:recordArr]; [recordArr release]; } return recordsArray; } [objc] view plain copy//斷開(kāi)數(shù)據(jù)庫(kù)連接 [objc] view plain copy- (void)disconnect { mysql_close(myconnect); NSLog(@"Close From Mysql"); } [objc] view plain copy [objc] view plain copy//修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)(無(wú)返回值)。刪除、增加數(shù)據(jù)都可以調(diào)用此方法。 [objc] view plain copy-(void)update:(NSString *)sql { if(myconnect) { mysql_query(myconnect, [sql UTF8String]); } else { NSLog(@"Please connect to DB first"); return; } } [objc] view plain copy//連接按鈕處理方法 [objc] view plain copy-(void)btnConnectTapped:(id)sender { NSLog(@"%@",ipText.text); NSLog(@"%@",duankouTextField.text); NSLog(@"%@",nameTextField.text); NSLog(@"%@",passwordTextField.text); mysqlManager = [[MysqlManager alloc]init]; [mysqlManager connectHost:[NSString stringWithFormat:@"%@",ipText.text] connectUser:nameTextField.text connectPassword:passwordTextField.text connectName:@"wgjchm"]; } [objc] view plain copy [objc] view plain copy//查詢按鈕處理方法 [objc] view plain copy-(IBAction)queryButtonTapped:(id)sender { //插入數(shù)據(jù) [objc] view plain copy[mysqlManager update:@"insert into fdgg values(5,'hc',1,80,0)"]; [objc] view plain copy//查詢數(shù)據(jù) NSMutableArray *res = [mysqlManager query:@"select name from fdgg"]; NSLog(@"%d",res.count); for(int i = 0; i < [res count]; ++i) { NSMutableArray *record = [res objectAtIndex:i]; for(int j = 0; j < [record count]; ++j) { //value既為查詢到的name值 [objc] view plain copy NSString *value = [record objectAtIndex:j]; NSLog(@"value=%@",value); } [objc] view plain copy //斷開(kāi)連接 [mysqlManager disconnect]; } 注:如果是連本地?cái)?shù)據(jù)庫(kù)IP地址為:127.0.0.1或localhost 端口號(hào)默認(rèn)為:3306(但不全是,要視情況而定)新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注