vc 6.0中MySql的使用

一、MySQL的安装

可以考虑安装mysql-5.0.41-win32(可到http://www.newhua.com/soft/3573.htm处下载),当然你有更新的版本更好,注意选择“完全安装”(只有这样才会安装VC编译时需要的头文件等)。安装后期会进行服务器配置,你可以设置你的服务器登陆密码,也可以不设置密码。

2009年6月10日 - aoxiangtiankong@yeah - 清晨森林里的一滴露珠二、VC6.0的设置

(1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。(我的是D:\Program Files\MySQL\MySQL Server 5.0\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里面添加如下的内容:(如果报'MYSQL' : missing storage-class or type specifiers等错,要将头文件加到对应类中)

#include "mysql.h"
#include "winsock.h"   // 如果编译出错,则把该行放到#include "mysql.h"之前
#pragma comment(lib,"libmySQL.lib")   // 如果在附加依赖项里已增加,则就不要添加了

(5)建议将“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目录下。

2009年6月10日 - aoxiangtiankong@yeah - 清晨森林里的一滴露珠 三、数据库、表的创建

打开“开始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe”,如果没有设置密码就直接按回车,会提示服务器启动成功。

mysql> SHOW DATABASES;//显示所有的数据库,注意一定要 敲“;”后再按回车
mysql> CREATE DATABASE mydb;//创建数据库mydb
mysql> USE mydb;//选择你所创建的数据库mydb
mysql> SHOW TABLES; //显示数据库中的表
mysql> CREATE TABLE mytable (username VARCHAR(100), visitelist VARCHAR(200),                                 remark VARCHAR(200));//创建一个表mytable: 用户名;访问列表;备注
mysql> DESCRIBE mytable;//显示表的结构

2009年6月10日 - aoxiangtiankong@yeah - 清晨森林里的一滴露珠四、VC编程

MYSQL mysql; //数据库连接句柄
mysql_init (&mysql);
if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))  {//mydb为你所创建的数据库,3306为端口号,可自行设定 
AfxMessageBox("数据库连接失败"); 
return FALSE;
}

(1)实现添加 功能

CString strUsername,strList,strRemark,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("增添失败"); 
}

(2)实现修改功能

CString strUsername,strList,strRemark,strSQL,str_PreName;//str_PreName用于记录想要修改的行,详情请看源代码
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("修改失败"); 
}

(3)实现删除功能

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("删除失败"); 
}

(4)读取表格内容到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);

(5)关闭数据库

mysql_close(&mysql);//最好写到OnDestroy()函数中
(6)测试代码
#include <windows.h>
#include <mysql.h>
#include "stdio.h"


MYSQL mysql, *sock; //mysql连接
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示
char query[150]; //查询语句


bool ConnectDatabase();     //函数声明
void FreeConnect();
bool QueryDatabase();
bool InsertData();

int main()
{
    ConnectDatabase();
    QueryDatabase();
    InsertData();
    QueryDatabase();
    FreeConnect();


    return 0;
}

//连接数据库
bool ConnectDatabase()
{
    //初始化mysql
    mysql_init(&mysql);  //连接mysql,数据库

    if (!(sock = mysql_real_connect(&mysql,"localhost", "root", "root", "test",0,NULL,0)))
    {
        printf( "Error connecting to database:%s\n",mysql_error(&mysql));
        return false;
    }
    else
    {
        printf("Connected...\n");
        return true;
    }
}

//释放资源
void FreeConnect()
{
    //释放资源
    mysql_free_result(res);
    mysql_close(sock);
}

//查询数据
bool QueryDatabase()
{
    sprintf(query, "select * from user"); //执行查询语句
    if(mysql_query(sock, query))        //执行SQL语句
    {
        printf("Query failed (%s)\n",mysql_error(sock));
        return false;
    }
    else
    {
        printf("query success\n");
    }

    //获取结果集
    if (!(res=mysql_store_result(sock)))    //获得sql语句结束后返回的结果集
    {
        printf("Couldn't get result from %s\n", mysql_error(sock));
        return false;
    }

    //打印结果数
    printf("number of fields returned: %d\n",mysql_affected_rows(sock));


    //获取字段的信息
    printf("|\t%s\t|\t%s\t|\t%s\t|\n", mysql_fetch_field(res)->name,    //打印各字段名
        mysql_fetch_field(res)->name,mysql_fetch_field(res)->name);

   //打印获取的数据
    while (row = mysql_fetch_row(res))      //获取下一行
    {
        printf("|\t%s\t|\t%s\t|\t%s\t|\n", row[0], row[1], row[2]);
    }
    return true;
}

//插入数据
bool InsertData()
{
    sprintf(query, "insert into user values (NULL, 'name4', 44);");
    if(mysql_query(sock, query))        //执行SQL语句
    {
        printf("Query failed (%s)\n",mysql_error(sock));
        return false;
    }
    else
    {
        printf("Insert success\n");
        return true;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值