VC++MySQL数据库编程

来源:互联网 发布:南风知我意七微txt 编辑:程序博客网 时间:2024/04/29 21:40

一、MySQL数据库的安装

    下载MySQL Server 5.1这个版本,当然版本越新越好。如果对MySQL数据库不是很熟悉的同学可以在网上下载Navicat for MySQL这个软件,这个软件有可视化的界面可以对MySQL数据库进行操作,其界面与微软的SQL Server的界面差不多。

 

二、VC8.0的设置

     因为本人对MySQL数据库的编程用的是Visual Studio 2005这个版本,所以下面的设置可能与VC6.0又一点点的区别。设置步骤如下:

     (1) 打开项目->属性->配置属性->C/C++->General->additional include directories

         在这里面添加C:/Program Files/MySQL/MySQL Server 5.1/include和C:/Program Files/MySQL/MySQL Server 5.1

         /lib/opt这两个路径。

     注:由于本人的MySQL数据库是安装在C:/Program Files这个目录下的,所以就存在了上面的路径的写法,大家可以根据自己的  

          MySQL数据库的安装位置确定路径。

     (2)打开项目->属性->配置属性->Linker->Input->additional dependencies

           在这里面添加libmysql.lib

     (3)在stdafx.h里面添加如下的内容:

          #include "winsock.h"
           #include "mysql.h"
           #pragma comment(lib,"libmySQL.lib")

      注:#include "winsock.h"一定要写在#include "mysql.h"的前面,否则出错。

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

 

三、数据库、表的创建

 

    如果没安装Navicat for MySQL这个软件的同学可以直接根据命令在MySQL中进行建库、建表。

 

    打开“开始->所有程序->MySQL->MySQL Server 5.1->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;//显示表的结构

四、VC编程

   

 (1) 数据库的连接操作

[cpp] view plaincopy
  1. MYSQL *mysql;//数据库连接句柄  
  2.     mysql = (MYSQL *)malloc(sizeof(MYSQL));      
  3.     mysql_init(mysql);  
  4.   
  5.     mysql=mysql_real_connect(mysql,"localhost","root","1","mydb",3306,NULL,0);  
  6.     if(!mysql)  
  7.     {  
  8.         printf("conn fail... ");  
  9.         return FALSE;  
  10.     }  

mysql=mysql_real_connect(mysql,"localhost","root","1","mydb1",3306,NULL,0);

其中"1"为本人MySQL数据库的密码。

 

(2) 实现添加 功能

 

 
[cpp] view plaincopy
  1. CString strUsername("hhhhhhhhhhh"),strList("ddddddddddddd"),strRemark("kkkkkkkk"),strSQL;   
  2. strSQL.Format("insert into mytable(username,visitelist,remark)values('%s','%s','%s')",strUsername,strList,strRemark);  
  3. if(mysql_real_query(mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)  
  4. {   
  5.     printf("%s", mysql_error(mysql));  
  6.     printf("添加数据失败!");  
  7. }  

在Visual Studio 2005中VC是默认Unicode,所以上面的代码中

strSQL.Format("insert into mytable(username,visitelist,remark)values('%s','%s','s')",strUsername,strList,strRemark);是编译不成功的,所以要设置多字符的形式才能编译成功,至于多字符在Visual Studio 2005中如何设置,这里不再赘述,不了解的同学可以上网去搜一下。如果不想用CString来实现,可以用sprintf的方法来写,代码如下:

[cpp] view plaincopy
  1. //sprintf方法写插入语句  
  2. char ch_query1[200];  
  3. char h1[]="gggggggggggggggg";  
  4. char h2[]="gggggggggggggggg";  
  5. char h3[]="gggggggggggggggg";      
  6. sprintf(ch_query1,"insert into mytable(username,visitelist,remark)values('%s','%s','%s')",h1,h2,h3);  
  7. if(mysql_real_query(mysql,ch_query1,(UINT)strlen(ch_query1))!=0)  
  8. {   
  9.     printf("插入数据失败!");  
  10. }  

 (3) 实现修改功能

 

 

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("修改失败"); 
}

 

(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) 读取表格 

 
[cpp] view plaincopy
  1.   //查找具体的数据  
  2. MYSQL_RES *result;  
  3. MYSQL_ROW row;  
  4. if(!(result=mysql_use_result(mysql)))  
  5. {  
  6.     printf("查询数据失败!");  
  7. }  
  8. while(row=mysql_fetch_row(result))  
  9. {  
  10.     printf("%s %s %s",row[0],row[1],row[2]);  
  11. }  

 

 (6) 关闭数据库

 

mysql_close(mysql);//最好写到OnDestroy()函数中

初次接触MySQL,这里只是本人通过上网搜集资料,并且自己亲自去操作得到的一点点经验,有错误或者不全面的地方望
指出。
出处:http://blog.csdn.net/wencheng2998/article/details/6428985
	
				
		
原创粉丝点击