VC6.0中对MySQL数据库的操作

来源:互联网 发布:知乎专栏名字 编辑:程序博客网 时间:2024/05/04 01:13
VC6.0中对MySQL数据库的操作

1.在mysql目录下找到名字为libmySQL.dll和libmySQL.lib 的文件拷贝到当前工程目录下,并在“工程->设置->连接”中链接libmysql.lib。
2.将mysql/include里面的头文件拷贝到当前工程目录下(可不用include)。
3.#include <winsock.h>
#include "mysql.h"
4.程序代码:
void CMySQLDlg::Search()
{
       MYSQL mysql;
       MYSQL_RES *result;
       MYSQL_ROW row;
       mysql_init(&mysql);   //初始化MYSQL结构
//参数:MYSQL结构;服务器主机名; 用户名; 密码; 数据库; 后三个参数取默认值
       if (!(mysql_real_connect(&mysql,"localhost","root","123","persons",0,NULL,0)))
       {   MessageBox(“连接失败”);
              return;  }
       if (mysql_query(&mysql,"select * from china")!=0)
       {     MessageBox(“查询失败”);
              return;  }
       else
       {
              if (!(result=mysql_store_result(&mysql)))
              {     return;   }
              else
              {
                     int numRecords = mysql_num_rows(result);//得到记录条数
                     int numFields = mysql_num_fields(result);  //得到字段数目
                     for (int i=0;i<numRecords;i++)
                     {  // mysql_fetch_row访问结果集中包含的记录,该函数每次读一条记录
                            row = mysql_fetch_row(result);
                            for (int j=0;j<numFields;j++)
                            {  str += row[j];  }
                     }
                  MessageBox(str);
              }
       }
       mysql_free_result(result);
       mysql_close(&mysql);
}



如何用mysql_real_connect()连接远程数据库?
我要编一段程序用来远程连接一个mysql数据库。我在数据库的本机上做试验,发现mysql_real_connect()的第二个参数设为"localhost"时可以正常连接,当改写为该机器的IP地址"192.168.100.2"时就连接失败。我在程序中写的原句为:
mysql_real_connect(mysql,"192.168.100.2","root","","mydns",0,NULL,0)。
在mysql数据库中有一个mysql库,它里面包含一个user表,里面存有所有帐号及它们的权限及特征。对应我的user表中找到User项为root的,发现有两项,其Host项分别为localhost和localhost.localdomain。我们只需要把'localhost'改为'%'就可以让所有远程机器以root帐号登陆mysql服务器。也可以将'localhost'改为某一个ip地址,这样就可以在该地址的机器上登陆mysql服务器。这些都没有问题,只是网上被广为传颂的一个更改Host项的方法是错误的。他的方法是用update语句将指定User项的Host项改过来,如果想添加一个新的用于远程访问的帐号,就用insert语句添加。事实是这根本不行,我按照作了,表是变了,但还是连不上。后来经过询问才知道,要想改,结合我的情况,必须用下面的这条语句:grant all privileges on mydns.* to [email='root'@'%']'root'@'%25'[/email];
来改变root帐号的权限。如果添加新帐号也是如此。想必这个表比较特殊,用普通的SQL语句不能操作。如果帐号有密码,后面再加上identified by '***'(*为你帐号的密码)就可以了。
MySQL语句:
quit 退出(不用加分号)
select version(),current_date(); 显示版本和当前日期
show databases; 显示所有数据库(包括test和mysql)
use test; 选择数据库test
select database(); 显示当前选择的数据库
/c 取消该条命令
show tables; 显示数据库中的表
show tables from mysql; 显示数据库mysql中的表
describe name_table显示字段和详细信息
create database base; 创建数据库base
drop database base; 删除数据库base
optimize table info; 优化表(清理刷新表)
load data local infile ‘ c://table.txt ’ into table info; 将文件中的数据导入到表info中
(注意文件中的数据字段间用Tab键隔开)
操作技巧:
1如果打命令时,回车后发现忘记加分号,无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
2 你可以使用光标上下键调出以前的命令。

原创粉丝点击