表示生活不容易的句子:VC范例-操作MySQL

来源:百度文库 编辑:九乡新闻网 时间:2024/04/24 19:22:37
源码下载:http://howwe.googlecode.com/files/MySqlVcDemo.rar
源码使用说明:
1、MySQL目录为mysql 5.1.44的精简版,只要修改my.ini文件中的两个参数中的“c:/”为相应目录即可:
basedir="c:/MySQL/"
datadir="c:/MySQL/Data/"

2、运行MySQL\bin下的createmysqlsvc.bat将mysql注册成服务,再运行startmysql.bat启动服务即可使用mysql。注意root密码

3、运行MySqlVcDemo.exe即可参看效果。

一、VC代码解释
  (1)mysql初始化
    mysql_init (&mysql); //数据库连接句柄
    if(!mysql_real_connect(&mysql,"localhost","root","1","test",3306,NULL,0))
    { //test为源码中自带数据库名,3306为端口号,可自行设定
        AfxMessageBox("数据库连接失败");
        return FALSE;
    }
    
    mysql_query(&mysql, "SET NAMES 'gb2312'");//加上这句就能解决乱码
  
  (2)添加
    CString strUsername,strList,strRemark;

    GetDlgItem(IDC_EDIT_USERNAME)->GetWindowText(strUsername);
    GetDlgItem(IDC_EDIT_VISITELIST)->GetWindowText(strList);
    GetDlgItem(IDC_EDIT_REMARK)->GetWindowText(strRemark);

    CString strSQL;
    strSQL.Format("insert into mytable(username,visitelist,remark) values(\'%s\',\'%s\',\'%s\')",strUsername,strList,strRemark); //注意一定要写在一行,而且必须要有\'\'
    if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
    {
        AfxMessageBox("增添失败");
    }
  
  (3)修改
    CString strUsername,strList,strRemark; //str_PreName用于记录想要修改的行,详情请看源代码
    
    GetDlgItem(IDC_EDIT_USERNAME)->GetWindowText(strUsername);
    GetDlgItem(IDC_EDIT_VISITELIST)->GetWindowText(strList);
    GetDlgItem(IDC_EDIT_REMARK)->GetWindowText(strRemark);

    CString strSQL;
    strSQL.Format("update mytable set username=\'%s\',visitelist=\'%s\',remark=\'%s\' where username=\'%s\'",strUsername,strList,strRemark,str_PreName);

    if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
    {
        AfxMessageBox("修改失败");
    }
  
  (4)删除
    CString strSQL;
    strSQL.Format("delete from mytable where username=\'%s\'",str_PreName); //必须要有\'\'
    if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
    {
        AfxMessageBox("删除失败");
    }
  
  (5)读取表格内容到CListCtrl控件m_list
    m_list.DeleteAllItems();

    //////////////////////////////////////////////////////////////////////////
    char *ch_query;
    ch_query="select * from mytable";
    
    if(mysql_real_query(&mysql,ch_query,(UINT)strlen(ch_query))!=0)
    {
        AfxMessageBox("数据库中表格出错");
    }

    CString str;
    MYSQL_RES *result;
    MYSQL_ROW row;
    
    if(!(result=mysql_use_result(&mysql)))
    {
        AfxMessageBox("读取数据集失败");         
    }

    int i=0;
    while(row=mysql_fetch_row(result)){
        str.Format("%s",row[0]);
        m_list.InsertItem(i,str);
        
        str.Format("%s",row[1]);
        m_list.SetItemText(i,1,str);
        
        str.Format("%s",row[2]);
        m_list.SetItemText(i,2,str);

        i++;
    }

    mysql_free_result(result);
  
  (6)关闭数据库
    mysql_close(&mysql);//最好写到OnDestroy()函数中
    
    二.说明
    1、mysql数据库不用安装,操作简便;
    2、mysql 数据库API文件头不用设置;
    3、不用建立数据库及表,减少学习难度。
    
    注:如果要自己动手,请参考附录
    
    附录:
    一、MySQL的安装
    直接在http://www.mysql.com/downloads/mysql下载,注意选择“完全安装”(只有这样才会安装VC编译时需要的头文件等)。安装后期会进行服务器配置,你可以设置你的服务器登陆密码,也可以不设置密码。
    
    二、VC6.0的设置
    (1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。(范例中直接复制include到根目录下)。
    (2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。Lib目录下还有debug和opt两个目录,建议选debug。(我的是D:\Program Files\MySQL\MySQL Server 5.0\lib\debug)。
    (3)在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。
    (4)在stdafx.h里面添加如下的内容:
#include "mysql.h"
#include "winsock.h"
#pragma comment(lib,"libmySQL.lib")
    (5)建议将“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目录下。
    
    三、数据库、表的创建
    打开“开始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe”,如果没有设置密码就直接按回车,会提示服务器启动成功。
mysql> SHOW DATABASES;//显示所有的数据库,注意一定要 敲“;”后再按回车
mysql> CREATE DATABASE test;//创建数据库test
mysql> USE test;//选择你所创建的数据库mydb
mysql> SHOW TABLES; //显示数据库中的表
mysql> CREATE TABLE mytable (username VARCHAR(100), visitelist VARCHAR(200),
                              remark VARCHAR(200));//创建一个表mytable: 用户名;访问列表;备注
mysql> DESCRIBE mytable;//显示表的结构