当前位置:首页 » 操作系统 » c连接mysql数据库代码

c连接mysql数据库代码

发布时间: 2022-04-19 04:44:17

⑴ c++代码 连接mysql数据库 怎么连接啊

您好,代码如下,希望能帮到您。还有,如果觉得俺答案还可以的话,请记得采纳答案。。

//下面的代码是一个实现C++连接MYSQL数据库的很好的例子
//这里用了建表,插入,检索,删表等常用功能
//我用VC++6.0生成,已经成功连接了。
//在VC++6.0中要想把做一下两步准备工作才可以。
//其实就是将头文件和库文件包含进来
#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 STEPBYSTEP
int main() {
cout << "****************************************" << endl;
#ifdef STEPBYSTEP

system("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 STEPBYSTEP
system("pause");
#endif
//初始化数据结构
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
} else {
cout << "mysql_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("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 STEPBYSTEP

system("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 STEPBYSTEP

system("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 Summation Of 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 STEPBYSTEP

system("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 STEPBYSTEP

system("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 STEPBYSTEP
system("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;
}

⑵ 用c语言如何对MySQL数据库进行操作

里的大部分代码参考了MySQL发行包里面的.c源文件,大家也可以去里面找找相关的代码,下面这段代码实现了连接到本地MySQL服务器上9tmd_bbs_utf8数据库,从数据表tbb_user中根据输入的userid取得该用户的用户名并打印输出到终端。
if defined(_WIN32) || defined(_WIN64)为了支持windows平台上的编译
#include <windows.h> #endif #include <stdio.h> #include <stdlib.h> #include "mysql.h"

我的机器上该文件在/usr/local/include/mysql下
定义MySQL数据库操作的宏,也可以不定义留着后面直接写进代码
define SELECT_QUERY "select username from tbb_user where userid = %d" int main(int argc, char **argv)char **argv 相当于 char *argv[] {

MYSQL mysql,*sock;定义数据库连接的句柄,它被用于几乎所有的MySQL函数
MYSQL_RES *res;查询结果集,结构类型
MYSQL_FIELD *fd ;包含字段信息的结构
MYSQL_ROW row ;存放一行查询结果的字符串数组
char qbuf[160];存放查询sql语句字符串
if (argc != 2) { //检查输入参数 fprintf(stderr,"usage : mysql_select <userid>\n\n"); exit(1); } mysql_init(&mysql); if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) { fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql)); perror(""); exit(1); } sprintf(qbuf,SELECT_QUERY,atoi(argv[1])); if(mysql_query(sock,qbuf)) { fprintf(stderr,"Query failed (%s)\n",mysql_error(sock)); exit(1); } if (!(res=mysql_store_result(sock))) { fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock)); exit(1); } printf("number of fields returned: %d\n",mysql_num_fields(res)); while (row = mysql_fetch_row(res)) { printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ; puts( "query ok !\n" ) ; } mysql_free_result(res); mysql_close(sock); exit(0); return 0;

为了兼容大部分的编译器加入此行
}
编译的时候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面两个选项可选,根据您的环境情况运行的时候,执行下面的命令
./mysql_select 1
将返回如下结果:
number of fields returned: 1 Ther userid #1 's username is: Michael query ok !

上面的代码我想大部分都能看明白,不明白的可以参考一下MySQL提供的有关C语言API部分文档,各个函数都有详细说明,有时间我整理一份常用的API说明出来。

⑶ c#连接mysql数据库 代码

连接字符串有问题,请检查,可用datasource自动生成连接字符串。

⑷ 如何用C语言连接MYSQL数据库

1、配置ODBC数据源。
2、使用SQL函数进行连接。
对于1、配置数据源,配置完以后就可以编程操作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void
main()
{
HENV
henv;
//环境句柄
HDBC
hdbc;
//数据源句柄
HSTMT
hstmt;
//执行语句句柄
unsigned
char
datasource[]="数据源名称";
//即源中设置的源名称
unsigned
char
user[]=
"用户名";
//数据库的帐户名
unsigned
char
pwd[]=
"密码";
//数据库的密码
unsigned
char
search[]="select
xm
from
stu
where
xh=0";
SQLRETURN
retcode;
//记录各SQL函数的返回情况
//
分配环境句柄
retcode=
SQLAllocEnv(&henv);
//
等介于
SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL
,
&henv);
//
设置ODBC环境版本号为3.0
retcode=
SQLSetEnvAttr(henv,
SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,
0);
//
分配连接句柄
retcode=
SQLAllocConnect(henv,&hdbc);
//
等介于
SQLAllocHandle(SQL_HANDLE_DBC,
henv,
&hdbc);
//设置连接属性,登录超时为*rgbValue秒(可以没有)
//
SQLSetConnectAttr(hdbc,
SQL_LOGIN_TIMEOUT,
(SQLPOINTER)(rgbValue),
0);
//直接连接数据源
//
如果是windows身份验证,第二、三参数可以是

⑸ C++怎么连接MySQL数据库

//
S:~在官方给的例子基础上进行修改后的例子
#include

#include

#include

#include

#include
"mysql_connection.h"
#include

#include

#include

#include

#include

using
namespace
std;
int
main(void)
try
{
sql::Driver
*driver;
sql::Connection
*con;
sql::Statement
*stmt;
sql::ResultSet
*res;
driver
=
0;
/*
Create
a
connection
*/
driver
=
get_driver_instance();
//
获取连接驱动
con
=
driver->connect("tcp://localhost:3306",
"root",
"********");
//
ip,用户,密码
/*
Connect
to
the
MySQL
test
database
*/
con->setSchema("test");
//
选择数据库
stmt
=
con->createStatement();
//
创建查询语句
res
=
stmt->executeQuery("select
*
from
a");
//
执行查询
while
(res->next())
{
cout
<<
"\t...
MySQL
replies:
";
/*
Access
column
data
by
alias
or
column
name
*/
cout
<<
res->getString(1)
<<
'\t'
<<
res->getString(2)
<<
endl;
//
输出1,2列
}
delete
res;
delete
stmt;
delete
con;
return
EXIT_SUCCESS;
}
catch
(sql::SQLException
&e)
{
cout
<<
"#
ERR:
SQLException
in
"
<<
__FILE__;
cout
<<
"("
<<
__FUNCTION__
<<
")
on
line
"
<<
__LINE__
<<
endl;
cout
<<
"#
ERR:
"
<<
e.what();
cout
<<
"
(MySQL
error
code:
"
<<
e.getErrorCode();
cout
<<
",
SQLState:
"
<<
e.getSQLState()
<<
"
)"
<<
endl;
}
运行截图:
mysql
connector/c++
文档(包括例子):
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp.html
mysql
connector/c++
api下载:
http://dev.mysql.com/downloads/connector/cpp/
下载以后lib和include文件夹直接到你vc的lib和include里
然后工程库引用里添加对mysqlcppconn.lib的引用
可能要将mysqlcppconn.dll放到c:\windows文件夹下
具体可以参考这里:
http://hi..com/buptyoyo/blog/item/11ddf212cdaef40b213f2e3d.html
另外注意目前有个已知的因debug和release模式下string长度不同而引起的bug:
http://bugs.mysql.com/bug.php?id=44272
所以代码要在release下编译运行,driver->connect才能连接成功

⑹ c语言怎么连接mysql数据库

如鹏网上有详细的视频教程,杨中科的C语言也能干大事,里面讲得很清楚。要是在这里讲需要写很多东西,累手,还没有视频直观

⑺ C++ 怎么连接MySQL数据库

#include <iostream>
#include <winsock2.h> // mysql.h中需要
#include <mysql/mysql.h> // 确保加了mysql的头文件到编译器目录里/**
* 我只演示了连接,执行语句等请搜索网上例子
* 项目需要连接 libmysql.lib
* 执行程序需要包含 libmySQL.dll
*/
int main()
{
MYSQL * temp = NULL;
MYSQL * temp2 = NULL;
my_bool my_true = true; const char* hostname = "localhost"; //数据库地址
const char* usernmae = "root"; //用户名
const char* password = "root"; //密码
const char* dbName = "test"; //数据库名
unsigned int port = 3306; //端口 temp = mysql_init( NULL );
if(!temp)
{
printf("初始化失败");
return 0;
} if(mysql_options(temp, MYSQL_SET_CHARSET_NAME, "gbk"))
{
printf("设置charset失败");
return 0;
} if(mysql_options(temp, MYSQL_OPT_RECONNECT, &my_true))
{
printf("设置可重连失败");
return 0;
} temp2 = mysql_real_connect(temp, hostname, usernmae, password, dbName, port, NULL, 0);
if(!temp2)
{
printf("连接失败");
mysql_close(temp);
return 0;
} printf("连接成功,`temp2` 即为mysql连接,用做后续的查询等操作."); return 0;
}

⑻ 用c语言怎么连接数据库呢

25.2.2. C API函数概述
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。请参见25.2.3节,“C API函数描述”。

函数
描述

mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。

mysql_autocommit()
切换 autocommit模式,ON/OFF

mysql_change_user()
更改打开连接上的用户和数据库。

mysql_charset_name()
返回用于连接的默认字符集的名称。

mysql_close()
关闭服务器连接。

mysql_commit()
提交事务。

mysql_connect()
连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。

mysql_create_db()
创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。

mysql_data_seek()
在查询结果集中查找属性行编号。

mysql_debug()
用给定的字符串执行DBUG_PUSH。

mysql_drop_db()
撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。

mysql_mp_debug_info()
让服务器将调试信息写入日志。

mysql_eof()
确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()
返回上次调用的MySQL函数的错误编号。

mysql_error()
返回上次调用的MySQL函数的错误消息。

mysql_escape_string()
为了用在SQL语句中,对特殊字符进行转义处理。

mysql_fetch_field()
返回下一个表字段的类型。

mysql_fetch_field_direct()
给定字段编号,返回表字段的类型。

mysql_fetch_fields()
返回所有字段结构的数组。

mysql_fetch_lengths()
返回当前行中所有列的长度。

mysql_fetch_row()
从结果集中获取下一行

mysql_field_seek()
将列光标置于指定的列。

mysql_field_count()
返回上次执行语句的结果列的数目。

mysql_field_tell()
返回上次mysql_fetch_field()所使用字段光标的位置。

mysql_free_result()
释放结果集使用的内存。

mysql_get_client_info()
以字符串形式返回客户端版本信息。

mysql_get_client_version()
以整数形式返回客户端版本信息。

mysql_get_host_info()
返回描述连接的字符串。

mysql_get_server_version()
以整数形式返回服务器的版本号。

mysql_get_proto_info()
返回连接所使用的协议版本。

mysql_get_server_info()
返回服务器的版本号。

mysql_info()
返回关于最近所执行查询的信息。

mysql_init()
获取或初始化MYSQL结构。

mysql_insert_id()
返回上一个查询为AUTO_INCREMENT列生成的ID。

mysql_kill()
杀死给定的线程。

mysql_library_end()
最终确定MySQL C API库。

mysql_library_init()
初始化MySQL C API库。

mysql_list_dbs()
返回与简单正则表达式匹配的数据库名称。

mysql_list_fields()
返回与简单正则表达式匹配的字段名称。

mysql_list_processes()
返回当前服务器线程的列表。

mysql_list_tables()
返回与简单正则表达式匹配的表名。

mysql_more_results()
检查是否还存在其他结果。

mysql_next_result()
在多语句执行过程中返回/初始化下一个结果。

mysql_num_fields()
返回结果集中的列数。

mysql_num_rows()
返回结果集中的行数。

mysql_options()
为mysql_connect()设置连接选项。

mysql_ping()
检查与服务器的连接是否工作,如有必要重新连接。

mysql_query()
执行指定为“以Null终结的字符串”的SQL查询。

mysql_real_connect()
连接到MySQL服务器。

mysql_real_escape_string()
考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。

mysql_real_query()
执行指定为计数字符串的SQL查询。

mysql_refresh()
刷新或复位表和高速缓冲。

mysql_reload()
通知服务器再次加载授权表。

mysql_rollback()
回滚事务。

mysql_row_seek()
使用从mysql_row_tell()返回的值,查找结果集中的行偏移。

mysql_row_tell()
返回行光标位置。

mysql_select_db()
选择数据库。

mysql_server_end()
最终确定嵌入式服务器库。

mysql_server_init()
初始化嵌入式服务器库。

mysql_set_server_option()
为连接设置选项(如多语句)。

mysql_sqlstate()
返回关于上一个错误的SQLSTATE错误代码。

mysql_shutdown()
关闭数据库服务器。

mysql_stat()
以字符串形式返回服务器状态。

mysql_store_result()
检索完整的结果集至客户端。

mysql_thread_id()
返回当前线程ID。

mysql_thread_safe()
如果客户端已编译为线程安全的,返回1。

mysql_use_result()
初始化逐行的结果集检索。

mysql_warning_count()
返回上一个SQL语句的告警数。 详见:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview
http://dev.mysql.com/doc/refman/5.0/en/c.html

⑼ 用C语言怎么实现与数据库的连接

#include<mysql/mysql.h>

#include<stdio.h>

intmain()

{

MYSQL*conn;

MYSQL_RES*res;

MYSQL_ROWrow;

char*server="localhost";//本地连接

char*user="root";//

char*password="525215980";//mysql密码

char*database="student";//数据库名

char*query="select*fromclass";//需要查询的语句

intt,r;

conn=mysql_init(NULL);

if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))

{

printf("Errorconnectingtodatabase:%s ",mysql_error(conn));

}else{

printf("Connected... ");

}

t=mysql_query(conn,query);

if(t)

{

printf("Errormakingquery:%s ",mysql_error(conn));

}else{

printf("Querymade... ");

res=mysql_use_result(conn);

if(res)

{

while((row=mysql_fetch_row(res))!=NULL)

{

//printf("num=%d ",mysql_num_fields(res));//列数

for(t=0;t<mysql_num_fields(res);t++)

printf("%8s",row[t]);

printf(" ");

}

}

mysql_free_result(res);

}

mysql_close(conn);

return0;

}

(9)c连接mysql数据库代码扩展阅读

C语言使用注意事项:

1、指针是c语言的灵魂,一定要灵活的使用它:

(1)、指针的声明,创建,赋值,销毁等

(2)、指针的类型转换,传参,回调等

2、递归调用也会经常用到:

(1)、递归遍历树结构

(2)、递归搜索

热点内容
python获取当前路径下的文件夹 发布:2024-09-30 15:07:24 浏览:141
java解析xml数据 发布:2024-09-30 15:06:39 浏览:625
微信传输助手的文件夹 发布:2024-09-30 15:03:05 浏览:937
老电脑音乐服务器 发布:2024-09-30 15:02:20 浏览:317
连接linux下的数据库 发布:2024-09-30 14:58:29 浏览:609
语言翻译方法主要是编译型的解释 发布:2024-09-30 14:47:17 浏览:846
帮助跨站脚本 发布:2024-09-30 14:39:08 浏览:209
怎么对wps表格加密 发布:2024-09-30 14:20:39 浏览:158
amd编译代码 发布:2024-09-30 14:10:46 浏览:521
映射网络驱动器拒绝访问 发布:2024-09-30 13:55:46 浏览:446