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数据库姓名:学号: 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的方法。
mysqlc语言接口中文说明
mysqlc语言接口中文说明MySQL C API 是 MySQL 数据库的 C 语言接口,它允许开发者在 C 或C++ 程序中直接使用 MySQL 数据库。
以下是一些基本的 MySQL C API 的中文说明:1. 初始化 MySQL 连接`MYSQL mysql_init(MYSQL con)`:使用已有的连接初始化一个新的连接,或如果 con 为 NULL,则初始化一个新的连接并将其返回。
2. 连接到 MySQL 服务器`my_bool mysql_real_connect(MYSQL con, const char host, const char user, const char passwd, const char db, unsigned int port, const char unix_socket, unsigned long clientflag)`:尝试连接到 MySQL 服务器。
3. 关闭 MySQL 连接`void mysql_close(MYSQL con)`:关闭与 MySQL 服务器的连接。
4. 执行 SQL 查询`MYSQL_RES mysql_query(MYSQL con, const char q)`:对 SQL 查询进行执行。
5. 获取结果集`MYSQL_RES mysql_store_result(MYSQL con)`:获取查询结果并存储在结果集中。
`MYSQL_RES mysql_use_result(MYSQL con)`:获取查询结果并立即开始读取。
6. 获取结果集中的数据`unsigned int mysql_num_rows(MYSQL_RES res)`:返回结果集中的行数。
`char mysql_fetch_row(MYSQL_RES res)`:获取结果集中的下一行。
7. 获取字段数据`unsigned int mysql_num_fields(MYSQL_RES res)`:返回结果集中的字段数。
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种方法及示例连接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数据库。
【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条。
C语言中的数据库操作与SQL语言
C语言中的数据库操作与SQL语言在现代软件开发中,数据库操作是一个非常关键的环节。
C语言作为一种强大的编程语言,也提供了丰富的数据库操作功能。
在本文中,我们将深入探讨C语言中的数据库操作以及与之紧密相关的SQL语言。
一、数据库操作简介数据库是一个用于存储和管理数据的系统。
在数据库中,我们可以创建表格来组织和存储数据。
C语言可以通过数据库操作来实现对数据库的增删改查等操作。
二、C语言中的数据库操作库C语言中有许多优秀的数据库操作库,比如MySQL、SQLite等。
这些库提供了一系列函数来实现与数据库的交互。
我们可以使用这些函数来连接数据库、创建表格、插入数据、更新数据以及查询数据等操作。
三、SQL语言简介SQL是结构化查询语言,用于对数据库进行操作的标准语言。
无论是在C语言中,还是在其他编程语言中,我们都需要使用SQL语言来操作数据库。
SQL语言包括了数据定义语言(DDL)和数据操作语言(DML)两部分。
1. 数据定义语言(DDL)DDL用于创建和管理数据库中的表格、字段、索引等对象。
在C语言中,我们可以使用SQL语句来创建表格,定义字段的数据类型以及设定约束等。
2. 数据操作语言(DML)DML用于对数据库中的数据进行插入、更新、删除和查询等操作。
在C语言中,我们可以使用SQL语句来完成这些操作,比如通过INSERT语句插入数据,通过UPDATE语句更新数据,通过DELETE语句删除数据,通过SELECT语句查询数据。
四、示例:C语言中的数据库操作下面是一个简单的示例,演示了如何在C语言中进行数据库操作。
```c#include <stdio.h>#include <stdlib.h>#include <mysql.h>int main() {MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;conn = mysql_init(NULL);if (!mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0)) {printf("连接失败: %s\n", mysql_error(conn));exit(1);}if (mysql_query(conn, "SELECT * FROM students")) {printf("查询失败: %s\n", mysql_error(conn));exit(1);}res = mysql_use_result(conn);printf("学生列表:\n");while ((row = mysql_fetch_row(res)) != NULL) {printf("%s %s\n", row[0], row[1]);}mysql_free_result(res);mysql_close(conn);return 0;}```以上代码演示了如何使用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。
-其他参数:用于指定连接的其他选项,如端口号等。
数据库连接c 的方法
数据库连接c 的方法数据库连接是指建立数据库连接并进行数据交互的过程,可以使用不同的方法来连接数据库。
在C语言中,也有多种方法可以连接数据库,常见的方法包括使用ODBC、JDBC和数据库提供的API等。
一、ODBC连接数据库:ODBC(Open DataBase Connectivity)是一种数据库连接标准,通过ODBC 可以连接不同数据库,包括MySQL、SQL Server等。
在C语言中,我们可以使用ODBC API来连接数据库。
具体步骤如下:1. 包含头文件:odbcinst.h、sql.h、sqlext.h、sqltypes.h;2. 定义ODBC环境、连接句柄和状态变量;3. 调用函数SQLAllocHandle来分配环境和连接句柄;4. 设置连接属性,如数据库驱动、连接字符串等;5. 调用函数SQLConnect来连接数据库;6. 进行数据操作,如查询、插入、更新等;7. 关闭连接,释放资源。
二、JDBC连接数据库:JDBC(Java Database Connectivity)是一种Java编程语言访问数据库的API,通过JDBC可以连接不同数据库。
在C语言中,我们可以使用JNI(Java Native Interface)来调用Java中的JDBC API。
具体步骤如下:1. 定义JVM(Java虚拟机)实例句柄、对象句柄和方法句柄;2. 加载并初始化JVM;3. 调用函数GetDefaultJVMInitArgs来获取JVM初始化参数;4. 调用函数InitializeJVM来初始化JVM;5. 创建Java虚拟机实例,并获取环境对象;6. 调用函数RegisterNatives来注册本地方法;7. 调用Java中的JDBC API来连接数据库;8. 进行数据操作,如查询、插入、更新等;9. 断开数据库连接,释放资源。
三、数据库提供的API连接数据库:各种数据库都提供了自己的API,通过调用数据库提供的API来连接数据库。
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 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*对象。
MFC,C++,C程序与MySql数据库连接,库函数
C++程序与MySql数据库连接——陈绍钦csq 有很多种技术可以让C++程序利用数据库:ODBC、DB、DAO、ADO、API等,ODBC是传统的方法功能强大,ADO比较便捷,并逐渐代替了DAO。
对于mysql数据库来说,其提供的API函数和PHP中mysqli函数相差不大,毕竟mysql是用c语言写的,可以说懂得了PHP和mysql的结合,就懂得了c++与mysql的结合。
以下是C++程序里利用mysql数据库的简略说明。
一、MySQL的安装可以考虑安装mysql-5.0.41-win32(可到/soft/3573.htm处下载),当然你有更新的版本更好,注意选择“完全安装”(只有这样才会安装VC编译时需要的头文件等)。
安装后期会进行服务器配置,你可以设置你的服务器登陆密码,也可以不设置密码。
二、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里面添加如下的内容:#include "winsock.h"#include "mysql.h"#pragmacomment(lib,"libmySQL.lib")(5)建议将“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目录下。
C#操作Mysql类
C#操作Mysql类using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Text.RegularExpressions;using MySql.Data.MySqlClient;namespace mysql{class MysqlConnection{MySqlConnection mysqlConnection;DataSet dataSet;string IP = "192.168.0.101";string UserName = "root";string Password = "123456";string Database = "ga";/// <summary>/// 建⽴mysql连接/// </summary>public MysqlConnection(){try{mysqlConnection = new MySqlConnection("datasource=" + IP + ";username=" + UserName + ";password=" + Password +";database=" + Database + ";charset=utf8");}catch (MySqlException ex){Console.WriteLine(ex.Message);}}public MysqlConnection(string IP, string UserName, string Password, string Database){try{string connectionString = "datasource=" + IP + ";username=" + UserName + ";password=" + Password + ";database=" + Database + ";charset=gb2312";mysqlConnection = new MySqlConnection(connectionString);}catch (MySqlException ex){Console.WriteLine(ex.Message);}}public string MysqlInfo(){string mysqlInfo = null;try{mysqlConnection.Open();mysqlInfo += "Connection Opened." + Environment.NewLine;mysqlInfo += "Connection String:" + mysqlConnection.ConnectionString.ToString() + Environment.NewLine;mysqlInfo += "Database:" + mysqlConnection.Database.ToString() + Environment.NewLine;mysqlInfo += "Connection ServerVersion:" + mysqlConnection.ServerVersion.ToString() + Environment.NewLine;mysqlInfo += "Connection State:" + mysqlConnection.State.ToString() + Environment.NewLine;}catch (MySqlException ex){Console.WriteLine("MySqlException Error:" + ex.ToString());}finally{mysqlConnection.Close();}return mysqlInfo;}/// <summary>/// 执⾏sql语句⽆返回结果/// </summary>public int MysqlCommand(string MysqlCommand){try{mysqlConnection.Open();Console.WriteLine("MysqlConnection Opened.");MySqlCommand mysqlCommand = new MySqlCommand(MysqlCommand, mysqlConnection);return mysqlCommand.ExecuteNonQuery();}catch (MySqlException ex){Console.WriteLine("MySqlException Error:" + ex.ToString());if (Regex.IsMatch(ex.ToString(), "")){Console.WriteLine(ex.Message);}}finally{mysqlConnection.Close();}return -1;}/// <summary>/// 执⾏select 语句返回执⾏结果/// </summary>public DataView MysqlDataAdapter(string table){DataView dataView = new DataView();try{mysqlConnection.Open();MySqlDataAdapter mysqlDataAdapter = new MySqlDataAdapter("Select * from " + table, mysqlConnection); dataSet = new DataSet();mysqlDataAdapter.Fill(dataSet, table);dataView = dataSet.Tables[table].DefaultView;}catch (MySqlException ex){Console.WriteLine(ex.Message);}finally{mysqlConnection.Close();}return dataView;}/// <summary>/// 统计记录个数参数:select count(*) from isns_users/// </summary>public long MysqlCountRow(string sql){DataView dataView = new DataView();try{mysqlConnection.Open();MySqlCommand mycm = new MySqlCommand(sql, mysqlConnection);// MySqlDataReader msdr = mycm.ExecuteReader();long recordCount = (long)mycm.ExecuteScalar(); return recordCount;}catch (MySqlException){return -1;// Console.WriteLine(ex.Message);}finally{mysqlConnection.Close();}// return 0;}}//end class}。
C语言数据库编程SQL和数据库操作
C语言数据库编程SQL和数据库操作C语言数据库编程:SQL和数据库操作C语言是一种高效、灵活的编程语言,适用于各种应用领域,包括数据库编程。
在C语言中,我们可以使用SQL语句来进行数据库操作,从而实现对数据库的增、删、改、查等功能。
本文将介绍C语言中的SQL和数据库操作。
一、连接数据库在进行数据库操作之前,我们首先需要连接到数据库。
C语言提供了各种数据库接口库,比如MySQL提供的Connector/C库、SQLite提供的SQLite3库等,这些库可以帮助我们连接数据库。
连接数据库的基本步骤如下:1. 引入库文件:在程序中引入相应的库文件,以便使用数据库接口函数。
2. 建立连接:使用数据库接口函数建立与数据库之间的连接,并指定连接参数,比如数据库名称、用户名、密码等。
3. 检查连接状态:检查连接是否成功建立,如果连接失败,则需要处理错误信息。
二、执行SQL语句连接成功后,我们就可以执行SQL语句来对数据库进行操作。
SQL 语句是一种专门用于与关系型数据库交互的语言,可以用于查询、插入、更新和删除数据。
在C语言中,我们可以使用数据库接口库提供的函数来执行SQL 语句,其中包括以下常用函数:1. 执行查询语句:使用函数执行SELECT语句,从数据库中检索数据。
2. 执行插入语句:使用函数执行INSERT语句,向数据库中插入新的数据。
3. 执行更新语句:使用函数执行UPDATE语句,更新数据库中的数据。
4. 执行删除语句:使用函数执行DELETE语句,从数据库中删除数据。
执行SQL语句的具体步骤如下:1. 构造SQL语句:根据需求构造合适的SQL语句,包括语法、条件等。
2. 执行SQL语句:使用数据库接口函数执行SQL语句,获取执行结果。
3. 处理结果:根据执行结果进行相应的操作,比如提取查询结果、处理错误信息等。
三、事务处理事务是数据库操作的基本单位,它是由一组数据库操作组成的逻辑单位,要么全部成功执行,要么全部回滚。
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程序中,可以使用一个称为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实用工具类
c#连接mysql实⽤⼯具类今天学习了c#连接MySQL,和我想得⼀样,与Java的基本⼀致。
由于之前⼀直⽤Java与MySQL配合使⽤,所以,我将c#与Java的⼀些相同点做出如下⽐较:Java中有***********************Class.forName("com.mysql.cj.jdbc.Driver");//加载JDBC驱动在c#中没有Java中有**********************public static String db_url = "jdbc:mysql://localhost:3306/jiuye?characterEcoding=utf-8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";public static String db_user = "root";public static String db_pass = "123456";Connection conn = null;conn = DriverManager.getConnection(db_url, db_user, db_pass);在c#中有对应类似的代码********************** "server=127.0.0.1;port=3306;database=zxw;user=root;password=123456";这⾥可以设置⽤户名,密码,数据库名称等总⽽⾔之,c#连接mysql的过程就是:1.string connectStr = "server=127.0.0.1;port=3306;database=zxw;user=root;password=123456";MySqlConnection conn = new MySqlConnection(connectStr);2. MySqlConnection conn = new MySqlConnection(connectStr);//MySqlConnection与Java中的Connection类似*********************************************************3. conn.Open();//开启数据库4.MySqlCommand cmd = new MySqlCommand(sql, conn);//*************这⾥的MySqlCommand与Java中的Connection类似,但是⽤法不同⽬前我认为的思路就是这样,如果以后有了新的认识,回头再改!。
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 。
C#版mysql连接字符串
C#版mysql连接字符串1. ODBC DSN2. ODBC -- MyODBC Driver -- local database3. ODBC -- MyODBC Driver -- remote database4. ODBC -- MySQL ODBC 3.51 Driver5. OleDb6. .NET DataProvider from CoreLab1. // ODBC DSN2.3. using System.Data.Odbc;4.5. OdbcConnection conn = new OdbcConnection();6. conn.ConnectionString =7. "Dsn=DsnName;" +8. "Uid=UserName;" +9. "Pwd=Secret;";10. conn.Open();1. // ODBC -- MyODBC Driver -- local database2.3. using System.Data.Odbc;4.5. OdbcConnection conn = new OdbcConnection();6. conn.ConnectionString =7. "Driver={MySql};" +8. "Server=localhost;" +9. "Option=16834;" +10. "DataBase=DataBaseName;"11. conn.Open();1. // ODBC -- MyODBC Driver -- remote database2.3. using System.Data.Odbc;4.5. OdbcConnection conn = new OdbcConnection();6. conn.ConnectionString =7. "Driver={MySql};" +8. "Server=;" +9. "Option=131072;" +10. "Port=3306;" +11. "Stmt=;" +12. "DataBase=DataBaseName;" +13. "Uid=UserName;" +14. "Pwd=Secret;"15. conn.Open();1. // ODBC -- MySQL ODBC 3.51 Driver2.3. using System.Data.Odbc;4.5. OdbcConnection conn = new OdbcConnection();6. conn.ConnectionString =7. "Driver={MySql ODBC 3.51 Driver};" +8. "Server=ServerName;" +9. "Option=16834;" +10. "Port=3306;" +11. "Stmt=;" +12. "DataBase=DataBaseName;" +13. "Uid=UserName;" +14. "Pwd=Secret;"15. conn.Open();16.17. // or18.19. using System.Data.Odbc;20.21. OdbcConnection conn = new OdbcConnection();22. conn.ConnectionString =23. "DRIVER={MySql ODBC 3.51 Driver};" +24. "SERVER=ServerName;" +25. "DATABASE=DataBaseName;" +26. "USER=UrerName;" +27. "PASSWORD=Secret;"28. conn.Open();1. // OleDb2.3. using System.Data.OleDb;4.5. OleDbConnection conn = new OleDbConnection();6. conn.ConnectionString =7. "Provider=MySqlProv;" +8. "Data Source=ServerName;" +9. "User id=UserName;" +10. "Password=Secret;"11. conn.Open();1. // .NET DataProvider from CoreLab2.3.4. using CoreLab.MySql;5.6. MySqlConnection conn = new MySqlConnection();7. conn.ConnectionString =8. "Host=ServerName;" +9. "DataBase=DataBaseName;" +10. "Protocol=TCP;" +11. "Port=3306;" +12. "Direct=true;" +13. "Compress=false;" +14. "Pooling=true;" +15. "Min Pool Size=0;" +16. "Max Pool Size=100;" +17. "Connection Lifetime=0;" +18. "User id=UserName;" +19. "Password=Secret;" +20. conn.Open();。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(conion success\n");
unsigned int flags
);
connection必须是已经初始化的连接句柄结构,server_host可以是主机名,也可以是IP地址,如果仅仅连接到本机,可以使用 localhost来优化连接类型。port_number和unix_socket_name应该分别为0和NULL,除非改变了MYSQL安装的默认 设置。
使用C语言操作MySQL数据库2009年04月23日 13:00
1.连接数据库。
从C语言连接MySQL数据库包含两个步骤:
a)初始化连接句柄结构;
b)实际创建连接。
首先使用mysql_init初始化连接句柄:
MYSQL * mysql_init (MYSQL *);
/usr/lib/mysql/libmysqlclient_r.a
/usr/lib/mysql/libmysqlclient_r.so
/usr/lib/mysql/libmysqlclient_r.so.15
/usr/lib/mysql/libmysqlclient_r.so.15.0.0
如果无法连接,返回NULL。完成连接后,在程序正常退出前,应该使用mysql_close关闭这个连接句柄。
void mysql_close(MYSQL * connection);
现在我们试图调用以上函数来建立一个对以上已经建好的数据库的访问,程序为connect1.c。内容如下:
#P.S. man gcc真长。 要冷静! #
##########################################
2. 操作数据库
进入数据库中之后,就可以开始对数据库进行读写操作了。
1)一次获取所有的数据:
MYSQL_RES *mysql_store_result(MYSQL *connection);
在成功调用mysql_query之后使用此函数,将立即保存在客户端中返回的所有数据,并将指向此结果集的指针返回。如果失败则返回NULL。
成功之后,可以用mysql_num_rows来得到返回记录的数目,一般应该是个正数,若没有返回行匹配,则返回0.
if(!conn_ptr){
fprintf(stderr, "mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "moldao","newpassword","moldao_test", 0, NULL, 0); //建立实际连接
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result);
此函数返回结果集的当前位置。不能把它用于mysql_data_seek。
#include <stdlib.h>
#include <stdio.h>
#include "mysql.h"
int main (int argc, char *argv[])
{
MYSQL *conn_ptr;
conn_ptr=mysql_init(NULL); //连接初始化
}
else {
printf("Connection failed\n");
}
mysql_close(conn_ptr); //关闭连接
return EXIT_SUCCESS;
# gcc -I/usr/include/mysql connect1.c -lmysqlclient -o connect1
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld 返回 1
链接库有问题,找不到mysqlclient链接库,man gcc发现可以在后面用-L指定搜索位置,于是我们先找到mysqlclient库的位置:
通常传递一个空指针给mysql_init这个函数,它会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,他将被重新初始化。如果出错,返回NULL。
初始化成功后,则使用mysql_real_connect来创建一个实际的连接:
MYSQL * mysql_real_connect(MYSQL * connection,
locate *mysqlclient*
/usr/lib/mysql/libmysqlclient.a
/usr/lib/mysql/libmysqlclient.so
/usr/lib/mysql/libmysqlclient.so.15
/usr/lib/mysql/libmysqlclient.so.15.0.0
}
然后编译:
#gcc -I/usr/include/mysql connect1.c -lmysqlclient -o connect1
connect1.c:4:19: 错误:mysql.h:没有那个文件或目录
提示是没有找到mysql.h,产生这个错误的原因是没有mysql.h文件,它在mysql-devel包中,需要安装这个包:
b)select语句的使用:
select语句是SQL语句中使用最频繁的操作。
一个完整的提取数据过程应该包含以下四个步骤:执行查询,提取数据,处理数据,清理。
使用mysql_query来发送SQL语句,使用mysql_store_result或者mysql_use_result来提取数据。然后使用 mysql_fetch_row调用来处理数据,最后,使用mysql_free_result来释放查询占用的内存资源。
数据库的主要操作包括select, insert, update, delete四种。
a)sql语句的嵌入:
执行SQL语句的主要API函数是:
int mysql_query(MYSQL *connection, const char * query)
这样找到位置就可以编译了:
gcc -I/usr/include/mysql connect1.c -lmysqlclient -L/usr/lib/mysql -o connect1
编译成功,于是就可以运行了,在此之前,确保mysqld已经在运行了:
sudo /etc/rc.d/init.d/mysqld restart
my_ulonglong mysql_affected_rows(MYSQL *connection);
MySQL返回被一个更新操作修改的行数,但其他许多数据库将仅仅因为记录匹配where字句而把它视为已经更新过。
通常对于mysql_函数,返回值0表示没有行受到影响,正数则是实际的结果,一般表示受语句影响的行数。
接受已经建立的连接结构指针和文本字符串形式的有效SQL语句(句末不用分号)。成功返回0。
还有一个比较重要的函数,mysql_affected_rows(),他返回无符号类型,当使用printf时,推荐使用%lu格式将其转换为无符号长整型。此函数返回受之前执行的update,delete,insert等查询影响的行数。
此函数从上面得到的结果集中提取一行,并把它放在一个行结构中。当数据用完或者出错时返回NULL。
void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset);
此函数允许结构集当前指针的跳转,设置会被下一个mysql_fetch_row操作返回的行。offset是行号,在0到总行数减1的范围内。传递0,则返回初始位置。
#在以上这一段编译这个connect1.c的文件过程了,出过两次错误,分别记录如上,看起来 #
#解决的办法很简单,但是自己当时确实是很迷茫,不知什么原因,网上搜索的结果大都不得#
#要领,最终还是靠自己静下心来看gcc的手册,man gcc才解决。 #
const char * server_host,
const char * sql_user_name,
const char * sql_password,
mysql_use_result和mysql_store_result都是返回一个指向结果集结构(result set structure)的指针,如果失败则返回NULL。区别在于store将查询到的数据库中的结果直接放在这个结果集中,而use则不直接将最终数据库 的数据结果放在这个结果集中。store其实就是把数据直接读到本地内存中,因此它比较适合数据量较小的查询。use则类似于一种流的操作,并不是一次就 返回所有的结果。因此,对于这个结果集,必须反复调用mysql_fetch_row直到提取所有的数据。
sudo yum install mysql-devel -y
然后找一下:
#locate mysql.h
/usr/include/mysql/mysql.h
这样就可以找到这个头文件了(-I的含义是在指定位置搜索头文件,参见man gcc)。再次尝试编译:
const char *db_name,
unsigned int port_number,
const char * unix_socket_name,
然后执行生成的可执行文件: