mysql在vc中的具体实现及应用文库

合集下载

(转载)用C#实现MySQL建库及建表

(转载)用C#实现MySQL建库及建表

(转载)⽤C#实现MySQL建库及建表最近做⼀个项⽬,为了⽅便⽤户使⽤,希望可以在系统初始化的时候,⾃动实现的建库和建表操作。

在⽹上查了很多资料都没有找到合适的,偶尔在⼀个国外⽹站上看到了相关的内容,特把实现⽅法整理如下:1、⽤C#实现MySQL建库[csharp]using System.Drawing;using System.Windows.Forms;using MySql.Data.MySqlClient;namespace MySqlDemo{/// <summary>/// 实现MySQL建库/// </summary>publicclass Form1 : System.Windows.Forms.Form{void btnCreateDB(object sender, System.EventArgs e){MySqlConnection conn = new MySqlConnection("Data Source=localhost;Persist Security Info=yes;UserId=root; PWD=你的密码;");MySqlCommand cmd = new MySqlCommand("CREATE DATABASE 你的数据库名;", conn );conn.Open();cmd.ExecuteNonQuery();conn.Close();}}}2、⽤C#实现MySQL建表[csharp]publicstaticvoid AlterTableExample(){string connStr = DbWrapper.TestDbWrapper.BuildConnectionString(DbWrapperType.MySql);string createStatement = "CREATE TABLE Test (Field1 VarChar(50), Field2 Integer)";string alterStatement = "ALTER TABLE Test ADD Field3 Boolean";using (MySqlConnection conn = new MySqlConnection(connStr)){conn.Open();// 建表using (MySqlCommand cmd = new MySqlCommand(createStatement, conn)){cmd.ExecuteNonQuery();}// 改表或者增加⾏using (MySqlCommand cmd = new MySqlCommand(alterStatement, conn)){cmd.ExecuteNonQuery();}}}24.。

vs2010连接mysql数据库方法

vs2010连接mysql数据库方法

Vs2010连接Mysql数据库方法下载MySQL 5.5.13 正式版:/html/361.html-------------------------------------------操作系统:winxp-32bit数据库:MySQL Server 5.5(安装路径:D:\Program Files\MySQL\MySQL Server 5.5)IDE: Microsoft Visual Studio 2010 untimate/Professional(以上东西都是完整安装的)-------------------------------------------一、VC设置1、新建一个工程,随便写一个helloworld,目的是就是让工程下的“debug”文件夹出现2、把D:\Program Files\MySQL\MySQL Server 5.5\lib下面的libmysql.dll复制到工程的debug文件夹里面3、接下来要设置一些引用文件的环境变量,首先,点击项目->属性->vc++目录。

然后“include目录”那把“D:\Program Files\MySQL\MySQL Server 5.5\include”给加进来再然后“lib目录”那里把“D:\Program Files\MySQL\MySQL Server 5.5\lib”也一起加进来VC6.0设置:(1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。

(我的是D:\Program Files\MySQL\MySQL Server 5.5\include)。

(2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。

C++vs2019操作mysqlworkbench8.0ce

C++vs2019操作mysqlworkbench8.0ce

C++vs2019操作mysqlworkbench8.0ce1.⾸先安装好mysql workbench/vs20192.⼯程配置,32位跟64位系统配置路径是不同的3.配置好后添加测试代码#include <iostream>#include <mysql.h>using namespace std;int main(){MYSQL mysql;MYSQL_RES* res;MYSQL_ROW row;//初始化数据库mysql_init(&mysql);//设置编码⽅式//mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");//连接数据库// mysql_real_connect参数:2.本地地址 3.⽤户名 4.密码 5.数据库名字 6.端⼝号//if (mysql_real_connect(&mysql, "localhost", "root", "1234", "test", 3306, NULL, 0) == NULL) { //本地数据库if (mysql_real_connect(&mysql, "192.168.6.28", "root", "1234", "usertest1", 3306, NULL, 0) == NULL) {//远程服务器cout << (mysql_error(&mysql));return 0;}////切换数据库//if (mysql_select_db(&mysql, "usertest2"))//{// cout << (mysql_error(&mysql));// return 0;//}//查询数据if (mysql_query(&mysql, "SELECT * from new_table;"))//new_table 是表名{cout << (mysql_error(&mysql));}//获取结果集//给ROW赋值,判断ROW是否为空,不为空就打印数据。

VS2019的C++项目连接MySQL的操作以及常见问题

VS2019的C++项目连接MySQL的操作以及常见问题

VS2019的C++项⽬连接MySQL的操作以及常见问题连接数据库操作1,将数据库安装好并配置好环境。

2,在项⽬属性页将⾃⼰的平台设置为与数据库对应的平台,然后在“项⽬–>属性->C/C++–>常规–>附加包含⽬录”中添加MySql Server的include⽬录。

3,在“项⽬–>属性->链接器–>常规->附加库⽬录”中添加MySql Server的lib⽬录。

4,在“项⽬–>属性->链接器–>输⼊->附加依赖项“中添加libmysql.lib。

5,测试代码如下1 #include <iostream>2 #include<mysql.h>3 #include<windows.h>45using namespace std;6 MYSQL* conn;7int main()8 {9const char* user = "root";10const char* password = "123456";11 conn = mysql_init(NULL);12if (mysql_real_connect(conn, "127.0.0.1", user, password, NULL, 0, NULL, 0) == NULL)13 cout << "数据库连接失败" << endl;14else15 cout << "数据库连接成功" << endl;16return0;1718 }6,若出现正常运⾏,则证明配置成功,如下图所⽰。

常见问题及解决⽅法1,问题>MyProject3.obj : error LNK2019: ⽆法解析的外部符号 _mysql_init@4,函数 _main 中引⽤了该符号>MyProject3.obj : error LNK2019: ⽆法解析的外部符号 _mysql_real_connect@32,函数 _main 中引⽤了该符号>E:\MySQL\mysql-8.0.26-winx64\lib\libmysql.lib : warning LNK4272: 库计算机类型“x64”与⽬标计算机类型“x86”冲突>D:\ProgramData\source\repos\MySolution\Debug\MyProject3.exe : fatal error LNK1120: 2 个⽆法解析的外部命令解决办法:这是因为数据库为X86架构的64位扩展(x86_64),其本质为64位,⽽我们的调试的平台使⽤的为X86(32位),这就造成了不兼容的问题,当我们在项⽬属性页设置的时候就应该将调试的平台改为位数据库对应的平台。

VC6.0连接MySQL大数据库

VC6.0连接MySQL大数据库

电力学院嵌入式系统应用安全课程论文题目: VC6.0连接MySQL数据库姓名:学号: 201132班级: 2011班院系:计算机科学与技术学院专业年级:信息安全2011级2014年6月8日通过VC开发MySQL数据库应用软件有多种方式:一、通过MyODBC界面二、通过Connector/C++l界面三、通过MySQL C API界面四、第三方封装的MySQL类在经过反复比较,我还是选择了MySQL C API方式来进行MySQL的开发。

在VC中使用MySQL的步骤如下:一、MYSQL的准备工作1.下载MySQL的服务器/客户端安装包我的开发环境是Windows,所以我下载的是MySQL for Windows mysql-5.6.19-win322.安装MySQL服务器/客户端包Cmd下进入mysql-5.6.19-win32 安装目录,我的安装目录是D:\mysql-5.6.19-win32\bin界面输入安装语句 sqld-unstall。

成功安装MYSQL3.运行MYSQL ,建立测试数据库及表启动MYSQL语句创建数据库语句创建表语句创建表中数据4.查看建立的表格二、VC设置准备打开vc++6.0,TOOLS->OPTIONS->DIRECTORIES,在其Include files添加MySQL 的include路径。

切换下拉框,选择Library files,添加MySQL的lib路径。

PROJECTS -->SETINGS-->LINK 在OBJECT/LIBARY MODULES 添加 libmysql.lib将MYSQL安装目录中的几个文件复制到VC工程文件夹中MySQL数据库安装之后在\MySQL \lib\opt目录下libmysql.liblibmysql.dll同时需要\MySQL\include目录下的几个文件:mysql_version.hmy_list.hmysql_.hmysql_time.hmysql.hmy_alloc.htypelib.h在VC的安装目录Microsoft Visual Studio\VC98\Lib下找到:WS2_32.LIB三、VC编程,建立工程WIN32 CONSOLE APPLICATION 代码#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql.h>#include <iostream>#pragma comment(lib,"libmysql.lib")//连接MysQL需要的库using namespace std;int main(){const char user[] = "root"; //usernameconst char pswd[] = ""; //passwordconst char host[] = "127.0.0.1"; //or"127.0.0.1"const char table[] ="testdb"; //databaseunsigned int port = 3306; //server portMYSQL myCont;MYSQL_RES *result;MYSQL_ROW sql_row;MYSQL_FIELD *fd;char column[32][32];int res;mysql_init(&myCont);if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0)){cout<<"connect succeed!"<<endl;mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文 res=mysql_query(&myCont,"select * from name_table");//查询if(!res){result=mysql_store_result(&myCont);//保存查询到的数据到resultif(result){int i,j;cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;for(i=0;fd=mysql_fetch_field(result);i++)//获取列名{strcpy(column[i],fd->name);}j=mysql_num_fields(result);for(i=0;i<j;i++){printf("%s\t",column[i]);}printf("\n");while(sql_row=mysql_fetch_row(result))//获取具体的数据{for(i=0;i<j;i++){printf("%s\n",sql_row[i]);}printf("\n");}}}else{cout<<"query sql failed!"<<endl;}}else{cout<<"connect failed!"<<endl;}if(result!=NULL) mysql_free_result(result);//释放结果资源mysql_close(&myCont);//断开连接return 0;}结果四、心得通过网络资料自学使用MY SQL连接vc的方法。

数据库原理及应用(MySQL版)高亮

数据库原理及应用(MySQL版)高亮

数据库原理及应用(MySQL版)引言数据库是存储和管理数据的重要工具,广泛应用于各种领域。

本文将介绍数据库的基本原理以及MySQL数据库的应用。

数据库原理什么是数据库数据库是一种结构化存储和管理数据的工具。

它能够以一种高效的方式存储和检索数据,提供数据的持久性和一致性。

数据库系统的组成数据库系统由数据库、数据库管理系统(DBMS)和应用程序组成。

数据库是存储数据的文件集合,DBMS是管理数据库的软件,应用程序是通过DBMS访问和操作数据库的工具。

数据库的基本概念数据库中的数据以表的形式组织和存储。

表由行和列组成,行代表数据记录,列代表数据字段。

表可以通过主键来唯一识别每个数据记录。

数据库的四个基本操作数据库的基本操作包括插入(Insert)、查询(Select)、更新(Update)和删除(Delete)。

插入将新的数据记录添加到表中,查询用于从表中检索特定的数据,更新用于修改表中的数据,删除用于删除表中的数据。

MySQL数据库的应用MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序和大型企业信息系统。

以下是MySQL数据库的几个常见应用场景。

Web开发MySQL能够快速响应Web应用程序的查询请求,支持高并发访问。

它可以存储用户信息、文章、评论等数据,并且能够通过SQL语句实现数据的增删改查操作。

大数据分析MySQL具有良好的扩展性和灵活性,可以处理大规模数据的存储和分析。

它可以用于存储和查询日志数据、用户行为数据等大数据集合,以便进行数据挖掘和分析。

电子商务MySQL被广泛应用于电子商务网站,用于存储产品信息、订单信息、用户信息等。

通过MySQL的事务支持,可以确保订单的可靠性和一致性。

移动应用MySQL可以作为移动应用的后台数据库,存储和管理移动应用的用户数据、推送通知等。

它可以满足移动应用对数据存储和查询的高性能需求。

总结数据库是存储和管理数据的重要工具,MySQL作为一种开源的关系型数据库管理系统,被广泛应用于各种场景。

windows下c++连接mysql

windows下c++连接mysql

C++连接mysql 数据库环境:windows xp VC++6.0 mysql目的:实现建表,插入,检索,删表等常用功能。

VC6.0 的配置:菜单栏—》工具—》选项—》目录—》添加:C:\Program Files\MySQL\MySQL Server 6.0\includeC:\Program Files\MySQL\MySQL Server 6.0\lib\opt拷贝C:\Program Files\MySQL\MySQL Server 6.0\lib\opt下的libmysql.lib到C:\Program Files\Microsoft Visual Studio\VC98\Lib下写aa.cpp【注:一层层执行可以看到更好的效果】#include <winsock.h>#include <iostream>#include <string>#include <mysql.h>using namespace std;#pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "libmysql.lib")//单步执行,不想单步执行就注释掉#define STEPBYSTEPint main(){cout<<"****************************************"<<endl;#ifdef STEPBYSTEPsystem("pause");#endif//必备的一个数据结构MYSQL mydata;//初始化数据库if(0==mysql_library_init(0,NULL,NULL)){cout<<"mysql_library_init() succeed"<<endl;}else{cout<<"mysql_library_init() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//初始化数据结构if(NULL!=mysql_init(&mydata)){cout<<"mysql_init() succeed"<<endl;}else{cout<<"mysql_init() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//在连接数据库之前,设置额外的连接选项//可以设置的选项很多,这里设置字符集,否则无法处理中文if(0==mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk")) {cout<<"mysql_options() succeed"<<endl;}else{cout<<"mysql_options() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//连接数据库if(NULL!=mysql_real_connect(&mydata,"localhost","root","test","test",3306,NULL ,0))//这里的地址,用户名,密码,端口可以根据自己本地的情况更改{cout<<"mysql_real_connect() succeed"<<endl;}else{cout<<"mysql_real_connect() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//sql字符串string sqlstr;//创建一个表sqlstr ="CREATE TABLE IF NOT EXISTS user_info";sqlstr+="(";sqlstr+="user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";sqlstr+="user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";sqlstr+="user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The SummationOf Using Time'";sqlstr+=");";if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() create table succeed"<<endl;}else{cout<<"mysql_query() create table failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//向表中插入数据sqlstr ="INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');";if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() insert data succeed"<<endl;}else{cout<<"mysql_query() insert data failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//显示刚才插入的数据sqlstr="SELECT user_id,user_name,user_second_sum FROM user_info"; MYSQL_RES *result=NULL;if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() select data succeed"<<endl;//一次性取得数据集result=mysql_store_result(&mydata);//取得并打印行数int rowcount=mysql_num_rows(result);cout<<"row count: "<<rowcount<<endl;//取得并打印各字段的名称unsigned int fieldcount=mysql_num_fields(result);MYSQL_FIELD *field=NULL;for(unsigned int i=0;i<fieldcount;i++){field=mysql_fetch_field_direct(result,i);cout<<field->name<<"\t\t";}cout<<endl;//打印各行MYSQL_ROW row=NULL;row=mysql_fetch_row(result);while(NULL!=row){for(int i=0; i<fieldcount;i++){cout<<row[i]<<"\t\t";}cout<<endl;row=mysql_fetch_row(result);}}else{cout<<"mysql_query() select data failed"<<endl; mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//删除刚才建的表sqlstr="DROP TABLE user_info";if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() drop table succeed"<<endl; }else{cout<<"mysql_query() drop table failed"<<endl; mysql_close(&mydata) ;return -1;}mysql_free_result(result);mysql_close(&mydata);mysql_server_end();system("pause");return 0;}vc++添加c++文件:添加后:运行:没有错误的话会在debug下生成可执行文件:运行aa.exe:查看数据库:没用C连接之前:C连接mysql修改后:DONE!!1。

C连接MYSQL数据库的3种方法及示例

C连接MYSQL数据库的3种方法及示例

C连接MYSQL数据库的3种方法及示例连接MYSQL数据库有多种方法,下面介绍其中三种常用的方法。

1.使用CAPI连接MYSQL数据库CAPI是官方提供的一套用于连接和操作MYSQL数据库的函数库。

使用该API,可以在C程序中直接连接MYSQL数据库,并执行各种SQL语句。

以下是一个连接MYSQL数据库的示例:```c#include <mysql.h>int maiMYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;conn = mysql_init(NULL);if (conn == NULL)fprintf(stderr, "mysql_init failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL)fprintf(stderr, "mysql_real_connect failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}if (mysql_query(conn, "SELECT * FROM table"))fprintf(stderr, "mysql_query failed: %s\n",mysql_error(conn));mysql_close(conn);return 1;}res = mysql_use_result(conn);while ((row = mysql_fetch_row(res)) != NULL)printf("%s %s %s\n", row[0], row[1], row[2]);}mysql_free_result(res);mysql_close(conn);return 0;```上述代码首先初始化MYSQL对象,然后使用mysql_real_connect函数连接MYSQL数据库。

利用MySQL自带的C API函数实现数据库功能调用

利用MySQL自带的C API函数实现数据库功能调用

3 利用MySQL自带的C API函数实现数据库功能调用由于各个数据库之间的差异,它们所提供的数据库功能也就各有不同。

这样,通过ODBC API就不可能完全拥有所有的数据库功能,因而影响了程序对数据库的控制功能,也就不能充分发挥数据库的能力。

并且这种统一的接口还是以损失效能为前提的,这就使数据库操作时间延长。

所以,为了解决以上问题,MySQL 的制造商在提供ODBC驱动程序的基础上,还提供了各种编程环境下的API,其中包括 C API。

这些API函数很显然能尽可能地发挥数据库的能力,并减少数据库操作的延长时间,但却使程序的通用性受到严重影响。

MySQL提供了一套C API函数,它由一组函数以及一组用于函数的数据类型组成,这些函数与MySQL 服务器进行通信并访问数据库,可以直接操控数据库,因而显著地提高了操控效能。

C API数据类型包括:MYSQL(数据库连接句柄)、MYSQL_RES(查询返回结果集)、MYSQL_ROW(行集)、MYSQL_FIELD(字段信息)、MYSQL_FIELD_OFFSET(字段表的偏移量)、my_ulonglong(自定义的无符号整型数)等;C API提供的函数包括:mysql_close()、mysql_connect()、mysql_query()、mysql_store_result()、mysql_init()等,其中mysql_query()最为重要,能完成绝大部分的数据库操控。

下面将具体讨论数据库操作类CDatabase通过C API的实现以及在VC中的应用。

3.1 CDatabase类的实现CDatabase类封装了MySQL数据库的功能,因此不具备通用性,只能在对MySQL 的应用程序中使用。

下面将根据C++要求及规范给出CDatabase类的具体结构以及相关简要介绍:class CDatabase{public:BOOL UnLockTable(); //解锁BOOL LockTable(char* TableName,char* PRIORITY); //加锁int Reload(); //重新登陆,非零时返回错误信息char* GetState(); //服务器状态char* GetServerInfo(); //服务器信息int GetProtocolInfo(); //协议信息char* GetHostInfo(); //主机信息char * GetClientInfo(); //客户机信息char* GetFieldName(int FieldNum); //字段名BOOL IsEnd(); //是否最后int DropDB(char *db); //删除数据库,非零时返回错误信息void SeekData(int offset); //查找指定数据int CreateDB(char *db); //创建数据库,非零时返回错误信息void FreeRecord(); //释放结果集unsigned int GetFieldNum(); //得到字段数BOOL ConnectDB(Database_Param *p); //连接数据库MYSQL_ROW GetRecord(); //得到结果(一个记录)my_ulonglong GetRowNum(); //得到记录数BOOL SelectDB(Data_Param *para); //选择数据库BOOL UpdateRecord(Data_Param *para); //更新记录BOOL SelectRecord(Data_Param *para); //选择记录BOOL InsertRecord(Data_Param *para); //插入记录BOOL DelRecord(Data_Param *para); //删除记录BOOL SelectAll(Data_Param *para); //选择所有记录char * OutErrors(); //输出错误信息CDatabase(); //初始化数据库virtual ~CDatabase(); //关闭数据库连接private:MYSQL mysql; //数据库连接句柄MYSQL_RES *query; //结果集MYSQL_ROW row; //记录集MYSQL_FIELD *field; //字段信息(结构体)BOOL FindSave(char *str); //查找并保存结果集};通过CDatabase类中定义的这些功能函数,我们可以通过远程或本机完成对MySQL数据库的绝大部分操控,并且由于定义了解锁和加锁功能,使得应用程序能够多线程或多进程地访问数据库,大大提高了效能。

visualstudio2019连接MYSQL数据库详细教程(C#代码)

visualstudio2019连接MYSQL数据库详细教程(C#代码)

visualstudio2019连接MYSQL数据库详细教程(C#代码)⼀、⼯具:1.visual stdio20192.MySQL数据库⼆、添加动态链接:Visual Studio中选择项⽬->管理NuGet程序包(N) 然后在浏览⾥⾯搜索MySql.Data并进⾏安装。

三、实现过程:1.创建⼀个类来放数据库的连接和各种操作,我这⾥创建的是SQLManage2.加⼊需要的头⽂件using MySql.Data.MySqlClient;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;3.连接数据库,并返回⼀个MySqlConnection对象public MySqlConnection getConn(){string connetStr = "server=127.0.0.1;port=3306;user=root;password=root;database=hos_managesystem;Charset=utf8;";MySqlConnection conn = new MySqlConnection(connetStr);return conn;}其中server是数据库所在⽹络的IP地址,127.0.0.1代表本地,port是数据库设置的端⼝号,user⽤户名,password密码,database是要连接的数据库名,Charset=utf8主要是处理中⽂编码问题4.查询操作MySqlConnection conn = getConn(); //连接数据库conn.Open(); //打开数据库连接string sql = "select * from user'" ;MySqlCommand cmd = new MySqlCommand(sql, conn);MySqlDataReader mdr = cmd.ExecuteReader();if (mdr.Read()){string str = mdr["authority"].ToString();//接收⼀个返回值//对查询到数据进⾏相应的操作}conn.Close();5.增删改操作类似,只是sql语句不相同,这⾥以插⼊操作为例MySqlConnection conn = getConn(); //连接数据库conn.Open(); //打开数据库连接string sql = "insert into user values('123','123')";MySqlCommand cmd = new MySqlCommand(sql, conn);cmd.ExecuteNonQuery();conn.Close();说明:在进⾏对数据库具体操作时建议在SQLManage类中直接写不同的函数来实现,在Form代码处创建SQLManage对象来引⽤对应的⽅法,这样可以使代码更加简洁,同时也⽅便维护。

【C++】VS2015VS2017连接Mysql数据库教程

【C++】VS2015VS2017连接Mysql数据库教程

【C++】VS2015VS2017连接Mysql数据库教程要给C++程序连接MySQL数据库,分别需要:安装MySQL Server下载MySQL Connector/C++在IDE中配置依赖然后就可以在代码中调⽤API,来连接以及操作数据库。

⼀、安装MySQL Server这是MySQL 数据库服务,下载了它才能在⾃⼰的电脑中使⽤MySQL。

下载页⾯:参考教程:安装好后,我们打开MySQL 5.7 Command Line Client(在开始菜单的快捷⽅式⾥,也可以搜索⼀下),然后创建数据库mysql> create database test;使⽤数据库(这句不能加分号)mysql> use test查看已有的表mysql> show tables;创建表mysql> create table testuser ( id INT, name CHAR(20));⼆、下载MySQL Connector/C++这是连接MySQL的库,我们在C++中需要使⽤该库来连接数据库。

下载页⾯:三、IDE中配置依赖,以Visual Studio 2015为例为了在我们的C++⼯程⾥⽅便地引⽤ Connector/C++库,就要配置⼀下项⽬的依赖。

Windows10系统下编写C++⼯程我⼀般⽤VS,其他的IDE可以参考官⽅⽂档,如Linux中⽤NetBeans:,以下内容也是参考的。

3.1 选择编译⽅式配置依赖前,先将默认的Debug模式改为Release模式。

如果修改了编译⽅式,配置⾃然就改变了。

3.2 添加额外的Include⽬录在VS菜单中选择项⽬属性 =>C/C++=> 输⼊ => 附加包含⽬录点击,然后选择NewLine(黄⾊按钮),点“...”按钮选择MySQL Connector的路径,例如我的是C:\Program Files\MySQL\MySQL Connector C++1.1.8\include这⼀步是为了让我们的C++程序可以引⽤连接sql相关的头⽂件。

C语言操作MYSQL

C语言操作MYSQL

C语言操作MYSQLC语言是一种通用的编程语言,可以与各种数据库系统进行交互。

在这篇文章中,我们将介绍如何使用C语言进行MySQL数据库的操作,并提供一些示例代码。

1.包含头文件为了使用MySQL C Connector库的函数,我们需要在代码中包含相应的头文件。

头文件通常命名为mysql.h。

#include <mysql.h>2.连接到MySQL服务器在使用MySQL数据库之前,我们需要建立与MySQL服务器的连接。

为了连接到MySQL服务器,我们需要提供服务器主机名、用户名、密码等信息。

以下是连接到MySQL服务器的示例代码。

MYSQL *conn; // MySQL连接句柄conn = mysql_init(NULL); // 初始化连接mysql_real_connect(conn, "localhost", "root", "password", "database", 0, NULL, 0); // 连接到MySQL服务器在上面的示例中,我们使用了mysql_init函数来初始化连接,然后使用mysql_real_connect函数来实际连接到MySQL服务器。

参数说明如下:- conn:用于存储连接句柄的指针。

- "localhost":MySQL服务器的主机名。

如果MySQL服务器在同一台机器上,可以使用"localhost"。

如果MySQL服务器在另一台机器上,则需要提供相应的主机名。

- "root":MySQL服务器的用户名。

- "password":MySQL服务器的密码。

- "database":要连接的数据库名称。

如果连接到默认数据库,可以将其设置为NULL。

-其他参数:用于指定连接的其他选项,如端口号等。

cc++批量向mysql插入数据

cc++批量向mysql插入数据

cc++批量向mysql插⼊数据先给个MYSQL对于C的API具体代码,改为⼿动提交,每次5W数据//mysql所需的头⽂件和库⽂件#include "winsock.h"#include <Windows.h>#include <stdio.h>#include <stdlib.h>#include "mysql.h"#include<fstream>#include <string>#include <iostream>using namespace std;int main(){//配置⽂件ifstream configFin("config.txt");string processFile;//要处理的⽂件名字string dbhost;//数据库主机string dbuser;//数据库⽤户名string dbpwd;//数据库密码string dbname;//数据库名字string tmp;configFin>>tmp>>processFile>>tmp>>dbhost>>tmp>>dbuser>>tmp>>dbpwd>>tmp>>dbname;unsigned int port = 3306; //server portMYSQL myCont;mysql_init(&myCont);string uid, friendid;ifstream fin(processFile.c_str());int i=0;int eachCount = 0;string sql;while(!fin.eof()){if(mysql_real_connect(&myCont,dbhost.c_str(),dbuser.c_str(),dbpwd.c_str(),dbname.c_str(),port,NULL,CLIENT_MULTI_STATEMENTS)) {mysql_autocommit(&myCont,0);mysql_query(&myCont, "SET NAMES utf8");for(eachCount=0; eachCount<50000; ++eachCount){if(fin>>uid>>friendid){sql = "insert into friendlist values('"+uid+"','"+friendid+"');";mysql_query(&myCont, sql.c_str());}}cout<<". ";mysql_commit(&myCont);mysql_close(&myCont);//断开连接}else{cout<<"connect failed!"<<endl;}}fin.close();system("pause");system("pause");return0;}⼤致说⼀下C链接MYSQL的⽅法:1、去官⽅下载mysql和c的connector2、拷贝⾥⾯的lib⽬录下的dll和lib⽂件到当前⽬录下3、设置当前项⽬的头⽂件位下载的⽬录下的inlcude4、设置⼀个lib库(在项⽬设置⾥),设置第2步的⽂件名5、⽤上述程序就可以连接(数据库地址之类的,⾃⼰改掉)----------------------------------------insert插⼊多条数据有⼆种⽅法⼀种是写多条insert 语句⽤";"号分割每条sql,⼀种是insert本⾝的多个value 1,写多条insert⽤";"分割这个很简单,;号是mysql执⾏sql的结束符,写多个insert⽤;号割就是让mysql执⾏多次⽽已.⽐如:insert into table (field1,field2,field3) value ('a',"b","c");insert into table (field1,field2,field3) value ('a',"b","c");insert into table (field1,field2,field3) value ('a',"b","c");insert into table (field1,field2,field3) value ('a',"b","c");insert into table (field1,field2,field3) value ('a',"b","c");2,在insert中写多个valueINSERT INTO table (field1,field2,field3) VALUES ('a',"b","c"), ('a',"b","c"),('a',"b","c");。

【mySQL】C++操作mySql数据库(Mysqlconnectorc++)

【mySQL】C++操作mySql数据库(Mysqlconnectorc++)

【mySQL】C++操作mySql数据库(Mysqlconnectorc++)⽬录前⾔⼀、依赖:MySQL Connector/C++需要安装配置boost库⼆、简介应⽤程序要想访问数据库,必须使⽤数据库提供的编程接⼝。

⽬前业界⼴泛被使⽤的API标准有ODBC和JDBC。

ODBC是由微软提出的访问关系型数据库的C程序接⼝。

JDBC(Java Data Base Connectivity,java数据库连接)是⼀种⽤于执⾏SQL语句的Java API,可以为多种关系数据库提供统⼀访问,它由⼀组⽤Java语⾔编写的类和接⼝组成。

MySQL实现了三种Connector⽤于C/C++ 客户端程序来访问MySQL服务器:Connector/ODBC, Connector/C++(JDBC)以及Connector/C(libmysqlclient)。

MySQL C++ Driver的实现基于JDBC规范MySQL Connector/C++是由Sun Microsystems开发的MySQL连接器。

它提供了基于OO的编程接⼝与数据库驱动来操作MySQL服务器。

与许多其他现存的C++接⼝实现不同,Connector/C++遵循了JDBC规范。

也就是说,Connector/C++ Driver的API主要是基于Java语⾔的JDBC接⼝。

JDBC是java语⾔与各种数据库连接的标准⼯业接⼝。

Connector/C++实现了⼤部分JDBC规范。

如果C++程序的开发者很熟悉JDBC编程,将很快的⼊门。

Connector C++ 使⽤3.4 静态库和动态库:接着根据我们的需要,执⾏后续步骤:如果⽤静态库,可能⽐较⿇烦,因为静态库需要和编译器版本相匹配,因此需要⼿动编译⼀份,所以此次选择动态库。

动态库:创建项⽬和配置1、新建⼀个空项⽬2、将D:\Program Files\MySQL\Connector C++ 1.1.3\include添加到项⽬的包含⽬录中(根据具体路径⽽定)3、将D:\boost\boost_1_55_0添加到项⽬的包含⽬录中(根据具体路径⽽定)4、将D:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt添加到项⽬的库⽬录中(根据具体路径⽽定)5、添加mysqlcppconn.lib⾄附加依赖项中6、如果使⽤的mysql是64位的,还需要将项⽬的解决⽅案平台由win32改成x647、将D:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt(根据具体路径⽽定)下的mysqlcppconn.dll复制到项⽬中去,和.cpp,.h⽂件位于同⼀路径下将D:\Program Files\MySQL\MySQL Server 5.6\lib(根据具体路径⽽定)下的libmysql.dll复制到项⽬中去,和.cpp,.h⽂件位于同⼀路径下⾄此,相关配置全部完成代码编写6、程序引⼊头⽂件#include "jdbc/mysql_connection.h"#include "jdbc/mysql_driver.h"#include "jdbc/cppconn/statement.h"7、连接数据库//初始化驱动sql::mysql::MySQL_Driver *driver = NULL;sql::Connection *con = NULL;driver = sql::mysql::get_mysql_driver_instance();if (driver == NULL){cout << "driver is null" << endl;}con = driver->connect("tcp://localhost:3306", "root", "root");if (con == NULL){cout << "conn is null" << endl;}cout << "connect suceess" << endl;8、程序使⽤mysql版本为mysql-5.6.24-win32,完整的代码如下:#include "iostream"#include "jdbc/mysql_connection.h"#include "jdbc/mysql_driver.h"#include "jdbc/cppconn/statement.h"#include "jdbc/cppconn/prepared_statement.h"using namespace std;using namespace sql;int main(){//初始化驱动sql::mysql::MySQL_Driver *driver = NULL;sql::Connection *conn = NULL;driver = sql::mysql::get_mysql_driver_instance();if (driver == NULL){cout << "driver is null" << endl;}//连接//con = driver->connect("tcp://localhost:3306", "root", "root");conn = driver->connect("tcp://localhost:3306/ourcms", "root", "root");if (conn == NULL){cout << "conn is null" << endl;}cout << "connect suceess" << endl;//查询int flag = 0;sql::Statement *stmt = conn->createStatement();sql::ResultSet *res;res = stmt->executeQuery("SELECT * FROM cms_device");while (res->next()){cout << res->getInt("id") << endl;cout << res->getString("phone").c_str() << endl;cout << res->getString("imsi").c_str() << endl;}//插⼊conn->setAutoCommit(0);//关闭⾃动提交PreparedStatement *prep_stmt;int updatecount = 0;res->first();flag = 0;while (res->next()){if (strcmp(res->getString("imsi").c_str(), "460010010000100") == 0){flag = 1;break;}}if (flag == 0) {prep_stmt = conn->prepareStatement("INSERT INTO cms_device (id,phone,imsi) VALUES (111,?,?)"); prep_stmt->setString(1, "150********");prep_stmt->setString(2, "460010010000100");updatecount = prep_stmt->executeUpdate();}Savepoint *savept;savept = conn->setSavepoint("SAVEPT1");res->first();flag = 0;while (res->next()){if (strcmp(res->getString("imsi").c_str(), "460010010000101") == 0){flag = 1;break;}}if (flag == 0) {prep_stmt = conn->prepareStatement("INSERT INTO cms_device (phone,imsi) VALUES (?,?)");prep_stmt->setString(1, "150********");prep_stmt->setString(2, "460010010000101");updatecount = prep_stmt->executeUpdate();}conn->rollback(savept);conn->releaseSavepoint(savept);conn->commit();//更新conn->setAutoCommit(1);//打开⾃动提交prep_stmt = conn->prepareStatement("update cms_device set phone=? where phone=?");prep_stmt->setString(1, "150********");prep_stmt->setString(2, "150********");updatecount = prep_stmt->executeUpdate();}程序代码main.cpp#include <iostream>#include <map>#include <string>#include <memory>#include "mysql_driver.h"#include "mysql_connection.h"#include "cppconn/driver.h"#include "cppconn/statement.h"#include "cppconn/prepared_statement.h"#include "cppconn/metadata.h"#include "cppconn/exception.h"using namespace std;using namespace sql;int main(){sql::mysql::MySQL_Driver *driver = 0;sql::Connection *conn = 0;try{driver = sql::mysql::get_mysql_driver_instance();conn = driver->connect("tcp://localhost:3306/booktik", "root", "123456");cout << "连接成功" << endl;}catch (...){cout << "连接失败" << endl;}sql::Statement* stat = conn->createStatement();stat->execute("set names 'gbk'");ResultSet *res;res = stat->executeQuery("SELECT * FROM BOOK");while (res->next()){cout << "BOOKNAME:" << res->getString("bookname") << endl;cout << " SIZE:" << res->getString("size") << endl;}if (conn != 0){delete conn;}system("pause");}运⾏结果使⽤中会遇到的问题1.返回的结果中⽂乱码问题:安装好了boost库和Mysql connector c++ 1.1.3库后,我们配置好⼯程的属性,就能使⽤通过sql::Connection::createStatement(),⽅法创建的sql::Statement*对象,对数据库进⾏操作,但是如果你数据库中的编码是utf8或者其他⽀持中⽂的编码,那么你必需要在执⾏sql查询语句之前,执⾏这么⼀句代码:m_sqlStatement->execute("set names 'gbk'");这⾥的m_sqlStatement是⼀个sql::Statement*对象。

【C#】使用MySql.Data.dll连接MySQL数据库

【C#】使用MySql.Data.dll连接MySQL数据库

【C#】使⽤MySql.Data.dll连接MySQL数据库准备⼯作在Visual Studio中新建⼀个C#的控制台应⽤程序。

确保后台已经启⽤了MySQL57服务。

在MySQL的安装路径下找到DLL,默认位置是 C:\Program Files (x86)\MySQL\ 6.9\Assemblies\v4.5\MySql.Data.dll 。

更多写代码连接MySQL的⽅法(通过MySQLConnector连接器),参考⽂档 C:\Program Files (x86)\MySQL\ 6.9\Documentation\ConnectorNET.chm 。

在⽂档的Users Guide-Programming中有代码案例。

把MySql.Data.dll引⼊项⽬中。

v4.5表⽰.NetFramework框架的版本号,⼀定要保证使⽤的DLL与项⽬的.NetFramework版本⼀致,否则运⾏时报错找不到DLL,报错如下:1>F:\Learning\CSharpConnectMySQL\CSharpConnectMySQL\Program.cs(1,7,1,12): error CS0246: The type or namespace name 'MySql' could not be found (are you missing a using directive or an assembly reference?)测试增删改查using MySql.Data.MySqlClient;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CSharpConnectMySQL{class Program{static void Main(string[] args){// 服务器地址;端⼝号;数据库;⽤户名;密码string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root"; // ⽤户名和密码在MySQL定义的// 创建连接MySqlConnection conn = new MySqlConnection(connectStr);try{// 打开连接conn.Open();Console.WriteLine("已经建⽴连接");//Query(conn); // 测试查询//Insert(conn); // 测试插⼊//Update(conn); // 测试更新//Delete(conn);// 测试删除}catch (Exception e){Console.WriteLine(e.ToString());}finally{// 关闭连接conn.Close();Console.WriteLine("数据库已关闭");}Console.ReadKey();}///<summary>///查询///</summary>///<param name="conn"></param>private static void Query(MySqlConnection conn){// 创建命令string sql = "select * from users";MySqlCommand cmd = new MySqlCommand(sql, conn);// 读取数据MySqlDataReader reader = cmd.ExecuteReader();while (reader.Read()) // true表⽰能读取该⾏数据{ // ⽅式⼀:访问数组 Console.WriteLine(reader[0].ToString() + reader[1].ToString()); // reader[0]是读出来的第⼀列属性// ⽅式⼆:根据列数 Console.WriteLine(reader.GetInt32(0));// ⽅式三:根据列名 Console.WriteLine(reader.GetInt32("user_id"));}}///<summary>///插⼊,增加数据///</summary>///<param name="conn"></param>private static void Insert(MySqlConnection conn){// 创建命令string sql = "insert into user(user_name, user_pwd) values('asdAa','2345')";MySqlCommand cmd = new MySqlCommand(sql, conn);// 添加⼀条记录int result = cmd.ExecuteNonQuery();Console.WriteLine("数据库中受影响的⾏数 = " + result);}///<summary>///更新,改数据///</summary>///<param name="conn"></param>private static void Update(MySqlConnection conn){// 创建命令string sql = "update user set user_name = 'newName', user_pwd = '66777' where user_id = '3'";MySqlCommand cmd = new MySqlCommand(sql, conn);// 更新记录int result = cmd.ExecuteNonQuery();Console.WriteLine("数据库中受影响的⾏数 = " + result);}///<summary>///删除数据///</summary>///<param name="conn"></param>private static void Delete(MySqlConnection conn){// 创建命令string sql = "delete from user where user_id = '4'";MySqlCommand cmd = new MySqlCommand(sql, conn);// 删除记录int result = cmd.ExecuteNonQuery();Console.WriteLine("数据库中受影响的⾏数 = " + result);}}}传参拼接SQL语句///<summary>///验证⽤户名和密码///</summary>///<param name="conn"></param>///<param name="userName"></param>///<param name="password"></param>///<returns></returns>private static bool Verify(MySqlConnection conn, string userName, string password){// ⽅式⼀:组拼sql//string sql = "select * from user where user_name = '" + userName + "' and user_pwd = '" + password + "'"; //MySqlCommand cmd = new MySqlCommand(sql, conn);// ⽅式⼆:参数标记string sql = "select * from user where user_name = @p1 and user_pwd = @p2";MySqlCommand cmd = new MySqlCommand(sql, conn);cmd.Parameters.AddWithValue("p1", userName); // 这⾥会根据输⼊的类型,⾃动判断要不要加单引号''cmd.Parameters.AddWithValue("p2", password);MySqlDataReader reader = cmd.ExecuteReader();if (reader.Read()) // 要么查出⼀条数据,要么0条。

Dev-cpp下使用 MYSQL C API尝试连接MYSQL(C++)

Dev-cpp下使用 MYSQL C API尝试连接MYSQL(C++)

Dev-cpp下使用MYSQL C API尝试连接MY SQL(C++)2008-05-24 01:40:24| 分类:DataMining|举报|字号订阅在网上找了很多关于使用MYSQL C API的资料,和实例。

可不是VC下的,就是BCB的,要不就是Linux下的,而我一直想在Win下用标准C++来做东西(美其名曰是想要移植性:) )。

所以想在Dev-cpp下使用MYSQL C API尝试连接MYSQL。

下面把心得和连接、配置方法写一下。

Advertise on this siteProgrammer homeYour Ad Here1.当然要先安装MySQL数据库了。

我安的是5.02.我的Dev-cpp版本是4.9.9.2,操作系统是Windows XP SP2 。

a)为Dev-cpp下载MySQL的包。

方法有两个:1)使用Dev-cpp的更新功能。

“工具”-〉“检查更新” 如图1图 1图 2在“Select devpak server”中选择“”如图3所示图 3点击“Check for updates”在得到的文件列表中选择“libmysql”图4其他的就是下载和安装了。

(图5-7)图 5图 6图7b)直接到下载,然后使用package manager安装图83.现在就可以新建工程,来在自己的程序中使用MySQL 提供的C API了。

*注意:需要对工程作如下设置:1)“工程”-〉“工程属性” 中“参数”选项卡在“编译器”和“C++编译器”中加入“-Wall”和“-W”不包括“”,在“连接器”中加入“-lmysql”不包括“”如图9图92)在程序中加入#include < mysql.h>下面给出一个简单的示例程序。

#include <windows.h>#include <iostream>#include <mysql/mysql.h>#define SELECT_QUERY "select * from stu "using namespace std;int main(int argc, char *argv[])...{//connection paramschar *host = "localhost";char *user = "root";char *pass = "123";char *db = "mydb";//sockMYSQL *sock;MYSQL_RES *res;sock = mysql_init(0);if (sock) cout << "sock handle ok!" << endl;else ...{cout << "sock handle failed!" << endl;return EXIT_FAILURE;}//connectionif (mysql_real_connect(sock, host, user, pass, db, 0, NULL, 0)) cout << "connection ok!" << endl;else ...{cout << "connection failed!" << endl;return EXIT_FAILURE;}//queryif (mysql_query (sock, SELECT_QUERY ))...{cout << "Query failed " << mysql_error(sock) << endl;exit(1);}if ( !( res = mysql_store_result( sock )))...{cout << "Couldn't get result from " << mysql_error(sock) <<endl; exit(1);}MYSQL_FIELD *field;MYSQL_ROW row;while ((field = mysql_fetch_field(res)))...{printf("field name %s ", field->name);}while ( row = mysql_fetch_row ( res ))...{cout<<row[0]<<" "<<row[1]<<endl;}system("PAUSE");//closing connectionmysql_free_result ( res );mysql_close(sock);return EXIT_SUCCESS;}运行结果。

实习3-JavaBeanMySQL学生成绩管理系统。实习4--VCMySQL学生成绩管理系统

实习3-JavaBeanMySQL学生成绩管理系统。实习4--VCMySQL学生成绩管理系统

实习3 JavaBean/MySQL学生成绩管理系统本章以学生绩管理系统为例介绍Javabean的综合应用。

本系统实现学生信息的查询、录入、修改和删除,以及学生成绩的录入、修改等,包括了Jvabean的基本功能。

希望读者通过这个综合实例,了解用Javabean解决实际问题的基本方法。

综合应用实例的基本思路是:首先进入系统登录,登录成功进入学生成绩管理系统主页面。

主页面上提供系统的主要功能,单击某一功能,即进入该功能的页面。

P3。

1 构建系统准备P3。

1.1 数据库准备系统使用的数据库管理系统为Mysql5。

0,学生成绩数据库名为XSCJ.其中涉及4个表:学生信息表(XS),存放学生的基本信息;课程信息表(KC),存放课程的基本信息;学生课程成绩表(XSKC),存放学生课程的成绩信息;系统登录表(xscjuser),存放用户登录信息。

具体结构和样本数据参考附录A。

生成数据库表的sql语句如下:create database XSCJ;use XSCJ;drop table if exists KC; //删除已经存在的表drop table if exists XS;drop table if exists XSKC;drop table if exists xscjuser;create table KC //创建课程表(kch char (3)not null, //课程号kcm char (16),//课程名xq int(1), //学期xs int(1), //学时xf int(1),//学分primary key (kch)//主键“课程号”);create table XS //创建学生表(xh char(6) not null,//学号xm char(8), //姓名xb int, //性别cssj date,//出生日期zy char(10), //专业zxf int, //总学分bz text, //备注image longblob,//照片primary key (xh),//主键“学号");create table XSKC //创建成绩表(xh char(6)not null,//学号kch char(3), //课程号cj int(1), //成绩xf int(1), //学分primary key (xh)//主键“学号”);create table xscjuser //创建登录表(xh char(10)not null, //学号kl char(10),//口令primary key (xh)//主键“学号”);在命令行中输入以上sql语句,可以创建数据库XSCJ及4个表,也可以使用图形化用户界面工具MySQL Query Browser,把上面的SQL语句保存在D:\xscj.sql文件夹下,打开Query Browser工具,引入上面的SQL语句。

VC连接MySQL

VC连接MySQL

《VC连接MySQL》Ps:在项目中要用到MySQL,移植代码的时候报错如下,搜索找到此文章,特此收藏。

老是粗心大意,就是忘记设置导入libmysql.lib当然也不必看完下面全文,可能的情况还有,没有设置对头文件 or 根本没包含这,#include <winsock.h>#include <mysql.h>这两个的位置应该如此,反正没发现反过来能编译通过的。

问题(1)出现以下DEBUG信息时:TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_close@4 TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_select_db@8 TestNewSql.obj : error LNK2001: unresolved external symbol_mysql_real_connect@32TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_init@4解决方法:在VC工程中project—>setting—>link—>object/library modules中添加:libmysql.lib,然后编译就可以通过了(2)如果是在其他文件中引用的,在tools —>options —>directories—>show directories for :include files对应的项目中包含这些头文件。

(3)编译通过后,在运行时弹出对话框找不到libmysql.dll文件,在所安装的mysql目录下的lib\debug目录下可以找到该文件。

将其复制到编译好的release/debug目录下即可。

mysql的c语言函数

mysql的c语言函数

mysql的c语言函数MySQL是一种流行的关系型数据库管理系统,可以使用C程序来访问并处理MySQL数据库。

在C程序中,可以使用一个称为mysqlclient的MySQL C函数库来实现与MySQL数据库的通信。

MySQL C函数库公开了一组C API,可用于执行各种MySQL数据库操作,例如连接与断开连接,执行SQL查询,事务处理,以及数据的插入、修改、删除等操作。

MySQL C函数库常见函数如下:1. 连接与断开连接函数mysql_init和mysql_real_connect函数可用于连接到MySQL数据库服务器并开始一个新的连接。

mysql_close 函数用于停止与服务器连接。

mysql_init函数在C程序中启动MySQL库,用于初始化指向MySQL的主句柄。

具有以下语法:MYSQL *mysql_init(MYSQL *mysql)mysql_real_connect函数由C程序使用,在应用程序和MySQL服务之间建立一个新连接。

具有以下语法:MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int flags);其中,参数host 指定MySQL服务器的主机名或IP地址,user 和 passwd是访问MySQL服务器所使用的用户名和密码,这些参数都是必需的。

参数db是MySQL数据库的名称,port参数是MySQL服务协议使用的TCP端口号。

如果指定unix_socket参数,MySQL 驱动程序将连接到UNIX域套接字而不是TCP / IP套接字。

flags参数用于控制与服务器建立的连接选项。

2. 执行SQL查询函数mysql_query函数可用于执行SQL查询(例如SELECT语句),并将结果集返回给C程序。

C连接MYSQL数据库的3种方法及示例

C连接MYSQL数据库的3种方法及示例

C# 连接MYSQL数据库的方法及示例连接MYSQL数据库的方法及示例方法一:using MySql.Datausing MySql.Data.MySqlClient;其他操作跟SQL是差不多,无非就是前缀变成MySql了.补充:下面是连接字符串,供参考.MySqlConnection con = newMySql.Data.MySqlClient.MySqlConnection("Database='testdb';DataSource='localhost';User Id='db';Password='apple';charset='utf8'");con.Open();MySqlCommand cmd = new MySqlCommand();cmd.Connection = con;使用MYSQL推出的MySQL Connector/Net is an driver for MySQL该组件为MYSQL为访问MYSQL数据库设计的.NET访问组件。

安装完成该组件后,引用命名空间MySql.Data.MySqlClient;使用命令行编译时:csc /r:MySql.Data.dll test.cs方法二:通过ODBC访问MYSQL数据库访问前要先下载两个组件:和MYSQL的ODBC驱动(MySQL Connector/ODBC (MyODBC) driver)目前为3.51版安装完成后,即可通过ODBC访问MYSQL数据库方法三:使用CoreLab推出的MYSQL访问组件,面向.NET安装完成后,引用命名空间:CoreLab.MySql;使用命令编译时:csc /r:CoreLab.MySql.dll test.cs以下为访问MYSQL数据库实例编译指令:csc /r:CoreLab.MySql.dll /r:MySql.Data.dll test.csusing System;using ;using System.Text;using CoreLab.MySql;using System.Data.Odbc;using MySql.Data.MySqlClient;class ConnectMySql{public void Connect_CoreLab(){string constr = "User Id=root;Host=localhost;Database=qing;password=qing"; MySqlConnection mycn = new MySqlConnection(constr);mycn.Open();MySqlCommand mycm = new MySqlCommand("select * from shop",mycn); MySqlDataReader msdr = mycm.ExecuteReader();while(msdr.Read()){if (msdr.HasRows){Console.WriteLine(msdr.GetString(0));}}msdr.Close();mycn.Close();}public void Connect_Odbc(){//string MyConString ="DSN=MySQL;UID=root;PWD=qing";string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=test;" +"UID=root;" +"PASSWORD=qing;" +"OPTION=3";OdbcConnection MyConn = new OdbcConnection(MyConString);MyConn.Open();OdbcCommand mycm = new OdbcCommand("select * from hello",MyConn); OdbcDataReader msdr = mycm.ExecuteReader();while(msdr.Read()){if (msdr.HasRows){Console.WriteLine(msdr.GetString(0));}}msdr.Close();MyConn.Close();}public void Connect_Net(){string myConnectionString = "Database=test;Data Source=localhost;User Id=root;Password=qing";MySqlConnection mycn = new MySqlConnection(myConnectionString); mycn.Open();MySqlCommand mycm = new MySqlCommand("select * from hello",mycn); MySqlDataReader msdr = mycm.ExecuteReader();while(msdr.Read()){if (msdr.HasRows){Console.WriteLine(msdr.GetString(0));}}msdr.Close();mycn.Close();}public static void Main(){ConnectMySql ms = new ConnectMySql();ms.Connect_CoreLab();ms.Connect_Odbc();Connect_Net();}}1、用MySQLDriverCS连接MySQL数据库先下载和安装MySQLDriverCS,地址:/projects/mysqldrivercs/在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中注:我下载的是版本是MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MySQLDriverCS;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){MySQLConnection conn = null;conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);conn.Open();MySQLCommand commn = new MySQLCommand("set names gb2312", conn);commn.ExecuteNonQuery();string sql = "select * from exchange ";MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);DataSet ds = new DataSet();mda.Fill(ds, "table1");this.dataGrid1.DataSource = ds.Tables["table1"];conn.Close();}}}2、通过ODBC访问mysql数据库:参考:/china/community/Column/63.mspx1. 安装Microsoft :我安装的是mysql-connector-odbc-3.51.22-win32.msi2. 安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版3. 安装MySQL的ODBC驱动程序:我安装的是odbc_net.msi4. 管理工具-> 数据源ODBC –>配置DSN…5. 解决方案管理中添加引用Microsoft.Data.Odbc.dll(1.0.3300)6. 代码中增加引用using Microsoft.Data.Odbc;using System;using System.Collections.Generic;using ponentModel;using System.Drawing;using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试自动生成的using System.Text;using System.Windows.Forms;using Microsoft.Data.Odbc;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString);MyConnection.Open();Console.WriteLine("\n success, connected successfully !\n");string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";OdbcCommand cmd = new OdbcCommand(query, MyConnection);//处理异常:插入重复记录有异常try{cmd.ExecuteNonQuery();}catch(Exception ex){Console.WriteLine("record duplicate.");}finally{cmd.Dispose();}//***********************用read方法读数据到textbox********************** string tmp1 = null;string tmp2 = null;string tmp3 = null;query = "select * from test ";OdbcCommand cmd2 = new OdbcCommand(query, MyConnection);OdbcDataReader reader = cmd2.ExecuteReader();while (reader.Read()){tmp1 = reader[0].ToString();tmp2 = reader[1].ToString();tmp3 = reader[2].ToString();}this.textBox1.Text = tmp1 + " " + tmp2 + " " + tmp3;*///************************用datagridview控件显示数据表************************** string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString); OdbcDataAdapter oda = new OdbcDataAdapter("select * from customer ", MyConnection); DataSet ds = new DataSet();oda.Fill(ds, "employee");this.dataGridView1.DataSource = ds.Tables["employee"];*/MyConnection.Close();}}}文章出处:/course/4_webprogram//asp_netshl/2008429/112011.html 1、用MySQLDriverCS连接MySQL数据库先下载和安装MySQLDriverCS,地址:/projects/mysqldrivercs/在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中注:我下载的是版本是MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MySQLDriverCS;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){MySQLConnection conn = null;conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);conn.Open();MySQLCommand commn = new MySQLCommand("set names gb2312", conn);commn.ExecuteNonQuery();string sql = "select * from exchange ";MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);DataSet ds = new DataSet();mda.Fill(ds, "table1");this.dataGrid1.DataSource = ds.Tables["table1"];conn.Close();}}}2、通过ODBC访问mysql数据库:参考:/china/community/Column/63.mspx1. 安装Microsoft :我安装的是mysql-connector-odbc-3.51.22-win32.msi2. 安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版3. 安装MySQL的ODBC驱动程序:我安装的是odbc_net.msi4. 管理工具-> 数据源ODBC –>配置DSN…5. 解决方案管理中添加引用Microsoft.Data.Odbc.dll(1.0.3300)6. 代码中增加引用using Microsoft.Data.Odbc;using System;using System.Collections.Generic;using ponentModel;using System.Drawing;using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试自动生成的using System.Text;using System.Windows.Forms;using Microsoft.Data.Odbc;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString);MyConnection.Open();Console.WriteLine("\n success, connected successfully !\n");string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";OdbcCommand cmd = new OdbcCommand(query, MyConnection);//处理异常:插入重复记录有异常try{cmd.ExecuteNonQuery();}catch(Exception ex){Console.WriteLine("record duplicate.");}finally{cmd.Dispose();}//***********************用read方法读数据到textbox**********************string tmp1 = null;string tmp2 = null;string tmp3 = null;query = "select * from test ";OdbcCommand cmd2 = new OdbcCommand(query, MyConnection);OdbcDataReader reader = cmd2.ExecuteReader();while (reader.Read()){tmp1 = reader[0].ToString();tmp2 = reader[1].ToString();tmp3 = reader[2].ToString();}this.textBox1.Text = tmp1 + " " + tmp2 + " " + tmp3;*///************************用datagridview控件显示数据表************************** string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString); OdbcDataAdapter oda = new OdbcDataAdapter("select * from customer ", MyConnection); DataSet ds = new DataSet();oda.Fill(ds, "employee");this.dataGridView1.DataSource = ds.Tables["employee"];*/MyConnection.Close();}}}文章出处:/course/4_webprogram//asp_netshl/2008429/112011.html1.连接:1.安装Microsoft 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char* GetServerInfo(); //服务器信息
int GetProtocolInfo(); //协议信息
char* GetHostInfo(); //主机信息
char * GetClientInfo(); //客户机信息
char* GetFieldName(int FieldNum); //字段名
mysql在vc中的具体实现及应用.txt骗子太多,傻子明显不够用了。我就是在路上斩棘杀龙游江过河攀上塔顶负责吻醒你的公主。随着现代计算机软硬件及网络技术的发展,在网上查找资料已成为现在获取信息的最重要手段之一。众所周知,所有的网上信息都是储存在网站数据库中的,这些信息的查询、更新等操作的功能则是由数据库服务器提供的,显然,数据库服务器的性能将直接关系到网站的生存。网站搭建中用的最多的数据库服务器是oracle和MySQL,前者功能强大,属于旗舰型数据库服务器,但前期投入太大;后者功能不断完网站的数据库服务器选用MySQL,而且,由于MySQL性能出色,一些大型网站也选用了MySQL。
BOOL CDatabase::LockTable(char* TableName,char* PRIORITY)
连接函数实现如下:
BOOL CDatabase::ConnectDB(Database_Param *p)
{
if(!mysql_real_connect(&mysql,p->host,
p->user,p->password,p->db,p->port,
p->unix_socket,p->client_flag))
MySQL数据库简介
MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言,它使得存储、更新和存取信息更加容易。MySQL是一个客户机/服务器结构的实现,它由一个服务器守护程序 mysqld和许多不同的客户程序以及库组成的。
MySQL的主要目标是快速、健壮和易用。最初是因为MySQL的创始人需要这样的一个SQL服务器,它能处理与任何不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL因此就开发出来了。
class CDatabase
{
public:
BOOL UnLockTable(); //解锁
BOOL LockTable(char* TableName,char* PRIORITY); //加锁
int Reload(); //重新登陆,非零时返回错误信息
char* GetState(); //服务器状态
它提供C,C++,JAVA(JDBC),Perl,Python,PHP and TCL 的API接口;多平台支持,包括Solaris,SunOS,BSDI,SGI IRIX,AIX,DEC UNIX,Linux,FreeBSD,SCO OpenServer,NetBSD,OpenBSD,HPUX,Win9x and NT;多样的数据类型,包括有/无符号1,2,3,4,8字节integers,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT, BLOB,DATE,DATETIME,YEAR,SET,ENUM;非常灵活和安全的权限系统,密码加密;为Windows提供ODBC接口,可通过 Access与之相联,另有第三方开发商提供多样的 ODBC驱动程序;在MySQL 3.23中使用新MyISAM最大的表大小可达8百万 TB(2^63个字节);多种语言支持,但不支持中文。
3.2 CDatabase类在VC中的应用
第一步 建立初始化MySQL对象,并且将其初始化。即定义CDatabase类对象,这样程序就会自动调用构造函数CDatabase(),完成初始化。
构造函数实现如下:
CDatabase::CDatabase ()
{
mysql_init (&mysql);
然而,为了实现快速、健壮和易用的目的,MySQL必须牺牲一部分灵活而强大的功能,如子查询、存储过程与触发器、外键、事物处理等。因而,MySQL在某些应用中缺乏灵活性,但这也使它对数据的处理速度较其它数据库服务器至少快2~3倍。
MySQL自身不支持Windows的图形界面,因此,所有的数据库操作及管理功能都只能在MS-DOS方式下完成。首先,必须登陆MySQL服务器,即在提示符\MySQL\BIN>下输入MYSQL –H host –U user –Ppassword,提示符改为mysql>时表示登陆成功。然后,选择所操作的数据库,即mysql> USE databasename。接着就可以用SQL语句进行查询了。如果需要退出数据库服务器,可执行QUIT命令,这样就成功退出服务器了。
{
OutErrors(); // 输出错误信息
return false;
}
return true;
}
第三步 对数据库进行加锁。即调用LockTable(char* TableName,char* PRIORITY),对相应的表TableName完成相应属性PRIORITY的加锁,使程序兼容多线程功能。 加锁函数实现如下:
下面将具体讨论数据库操作类CDatabase通过C API的实现以及在VC中的应用。
3.1 CDatabase类的实现
CDatabase类封装了MySQL数据库的功能,因此不具备通用性,只能在对MySQL的应用程序中使用。下面将根据C++要求及规范给出CDatabase类的具体结构以及相关简要介绍:
BOOL UpdateRecord(Data_Param *para); //更新记录
BOOL SelectRecord(Data_Param *para); //选择记录
BOOL InsertRecord(Data_Param *para); //插入记录
BOOL DelRecord(Data_Param *para); //删除记录
}
完成初始化只需定义CDatabase类对象,即
CDatabase base;
第二步 连接服务器,并连接需要的数据库。即调用ConnectDB(Database_Param *p)函数,结构体Database_Param中存放数据库参数,包括主机名、用户名、密码、数据库名等。该函数如返回TRUE表示连接成功,否则表示失败。
MYSQL_RES *query; //结果集
MYSQL_ROW row; //记录集
MYSQL_FIELD *field; //字段信息(结构体)
BOOL FindSave(char *str); //查找并保存结果集
};
通过CDatabase类中定义的这些功能函数,我们可以通过远程或本机完成对MySQL数据库的绝大部分操控,并且由于定义了解锁和加锁功能,使得应用程序能够多线程或多进程地访问数据库,大大提高了效能。以上函数的具体功能都是通过调用C API函数实现的。
用VC通过ODBC API对MySQL数据库进行编程,必须要对MySQL数据源进行设置,具体设置如图1:
图1 数据源设置信息
通过上图的设置,接着我们就可以按照一般的ODBC数据库编程方法,对MySQL数据库进行编程。
3 利用MySQL自带的C API函数实现数据库功能调用
由于各个数据库之间的差异,它们所提供的数据库功能也就各有不同。这样,通过 ODBC API就不可能完全拥有所有的数据库功能,因而影响了程序对数据库的控制功能,也就不能充分发挥数据库的能力。并且这种统一的接口还是以损失效能为前提的,这就使数据库操作时间延长。所以,为了解决以上问题,MySQL的制造商在提供ODBC驱动程序的基础上,还提供了各种编程环境下的API,其中包括 C API。这些API函数很显然能尽可能地发挥数据库的能力,并减少数据库操作的延长时间,但却使程序的通用性受到严重影响。
MySQL提供了一套C API函数,它由一组函数以及一组用于函数的数据类型组成,这些函数与MySQL 服务器进行通信并访问数据库,可以直接操控数据库,因而显著地提高了操控效能。
C API数据类型包括:MYSQL(数据库连接句柄)、MYSQL_RES(查询返回结果集)、MYSQL_ROW(行集)、MYSQL_FIELD(字段信息)、MYSQL_FIELD_OFFSET(字段表的偏移量)、my_ulonglong(自定义的无符号整型数)等;C API提供的函数包括:mysql_close()、mysql_connect()、mysql_query()、 mysql_store_result()、mysql_init()等,其中mysql_query()最为重要,能完成绝大部分的数据库操控。
unsigned int GetFieldNum(); //得到字段数
BOOL ConnectDB(Database_Param *p); //连接数据库
MYSQL_ROW GetRecord(); //得到结果(一个记录)
my_ulonglong GetRowNum(); //得到记录数
BOOL SelectDB(Data_Param *para); //选择数据库
BOOL IsEnd(); //是否最后
int DropDB(char *db); //删除数据库,非零时返回错误信息
void SeekData(int offset); //查找指定数据
int CreateDB(char *db); //创建数据库,非零时返回错误信息
void FreeRecord(); //释放结果集
由此可见,MySQL数据库服务器在网站建设中的表现是十分出色的。但是,正因为这样,几乎很少有人将MySQL用于应用软件的开发中。本文将详细介绍VC环境中MySQL数据库服务器不同接口的应用,并最终将产生一个CDatabase类封装MySQL数据库接口功能。
相关文档
最新文档