iOS连接mysql数据库及基本操作

首先设计一个带 IP地址、端口号、用户名、密码 四个输入框及连接、查询等按钮的界面的iOS程序,然后引入要连接mysql数据库需要的文件:include mysql库文件(下载地址:http://download.csdn.net/source/3425857)和libmysqlclient.a文件(下载地址:http://download.csdn.net/source/3425860)。

然后添加一个实现连接mysql数据库及对数据库进行相关操作的方法的类。其实现连接mysql数据库及对数据库进行相关操作的方法的实现如下:

//连接数据库
-(void)connectHost:(NSString *)host connectUser:(NSString *)user connectPassword:(NSString *)password connectName:(NSString *)name
{
    
    myconnect = mysql_init(nil);
  //新增。设置编码(解决中文乱码问题)
   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");
}


//查询数据库中数据,参数sql既为SQL查询语句(@"select name from table1"),返回SQL语句查询到的结果,我理解的是recordArr中存放的是每组数据(每个column)中查询到的结果,而recordsArray中存放的是recordArr,即有几个column就有几个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++)
        { 
           //最新修改,解决中文乱码问题
           //中文简体编码: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;
}

//断开数据库连接
- (void)disconnect
{
    mysql_close(myconnect);
    NSLog(@"Close From Mysql");
}




//修改数据库中的数据(无返回值)。删除、增加数据都可以调用此方法。
-(void)update:(NSString *)sql
{
    if(myconnect)
    {
        mysql_query(myconnect, [sql UTF8String]);
    }
    else
    {
        NSLog(@"Please connect to DB first");
        return;
    }
}


//连接按钮处理方法
-(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"];
}


//查询按钮处理方法
-(IBAction)queryButtonTapped:(id)sender
{
    //插入数据
    [mysqlManager update:@"insert into fdgg values(5,'hc',1,80,0)"];
    //查询数据
    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值
            NSString *value = [record objectAtIndex:j];
            NSLog(@"value=%@",value);
        }
    }
    //断开连接
    [mysqlManager disconnect];
}

注:如果是连本地数据库IP地址为:127.0.0.1或localhost      端口号默认为:3306(但不全是,要视情况而定)


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值