linux 下 C 语言 连接 MySQL数据库 (详细注释)
C语言连接Mysql
C语言连接Mysql数据库:一,开发平台:Mysql5.0.18 Microsoft Visual C++ 6.0二,安装Mysql注意:若已安装了mysql5.0,先看看mysql安装路径下有没有include和lib目录,若没有则需重新安装mysql。
若已安装了mysql,且mysql安装路径下没有include 和lib目录。
则需先卸载mysql。
先把mysql的服务停止,然后再卸载。
在安装时一定要选择Complete安装。
因为在C连接Mysql时,需用到mysql安装路径下的include和lib目录。
若是安装时选择custom或typical可能导致没有include和lib目录。
下面介绍安装mysql5.0的安装步骤,请按照下图一步一步完成mysql的安装。
至此,mysql 安装完成。
勾选“Configure the MySQL Server now ”项进入mysq 相关配置点击“Execute ”至此点击“Finish”完成mysql安装,接下来可以安装oa.exe文件了。
更多事项请参考mysql官方手册说明。
注:如果计算机系统以前曾安装过mysql版本数据库,可能会出现下面类似错误此时并不要紧,mysql安装是正常的。
此时只需要点击“Retry”按键即可。
三,利用VC++创建一个C程序:①单击“文件”——单击“新建”,会弹出一个窗口(如图1),--选win32 console application --填写工程名并选择放置工程的位置-------确定------在弹出的窗口中选“一个空工程”(an empty project)-----确定。
图1②选中已建立的工程,然后选择“文件”选项卡-- 新建,再选中“C++Sourse File”(如图2)图2。
③在如图2的对话框中,在“文件名”栏目中输入文件名*.c(如以1.c为例,注:此时一定要带上.c,否则扩展名就变成了.cpp)。
linux下使用libmysql++库操作mysql的C API
linux下使用libmysql++库操作mysql的C API系统环境Ubuntu 12.041、安装mysqlubuntu下安装mysql是比较简单的,直接通过apt-get安装1.sudo apt-get install mysql-server-5.52、登入mysql1.mysql [-h host_name][-u user_name][-p password]其中参数-h后面要给出连接的数据库的IP地址或者域名、参数-u后面要给出登录的用户名、参数-p表示登录的密码。
有时连接本机默认的Mysql数据库服务器,则可以直接在命令行中输入如下简写形式(root用户):1.mysql -u root -p之后,系统会提示你输入root用户的密码3、mysql的基本命令在mysql中,输入help或者?命令,即可用查看mysql支持的内部操作命令。
(1)显示数据库列表显示数据库列表命令比较简单,直接输入show databases;即可。
(2)选择一个数据库选择一个数据库比较简单,使用use dbname,其中dbname为要选择的数据库名字。
比如,这里我们选择test数据库:(3)查看一个数据库中的所有表通过show tables,可以查看一个数据库中所有的数据库表。
(4)退出简单的命令,quit;需要注意的是,每个命令后面需要加上分号“;”,因为分号表示一个事务的结束。
4、mysql数据库操作实例。
(1)创建班级数据库创建数据库的命令式create databases dbname,其中dbname为数据库名,例如当前要创建的数据库名为class,因此需要输入下面的命令:1. mysq->create database class;(2)创建学生信息表1. mysql>use class;2. mysql>create table student (nid INT UNIQUE,name VARCHAR(20),age int);(3)插入基本数据向已经创建好的数据表中插入3条基本记录,SQL语句如下:1. mysql->insert into student values(100,'Lee', 16);2. mysql->insert into student values(101,'Tom', 17);3. mysql->insert into student values(102,'Harry', 15);(4)查询全部数据利用select语句查询全部记录。
用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
⽤C语⾔操作MySQL数据库,进⾏连接、插⼊、修改、删除等操作C/C++ code1234 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 45 46 47 48 49 50 51 52 53#if defined(_WIN32) || defined(_WIN64) //为了⽀持windows平台上的编译#include <windows.h>#endif#include <stdio.h>#include <stdlib.h>#include "mysql.h" //我的机器上该⽂件在/usr/local/include/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);return0; //. 为了兼容⼤部分的编译器加⼊此⾏}很多⼈⽤到MySQL来开发⼀些项⽬,有时为了性能,我们会直接⽤C语⾔来开发相关的模块,尤其在我们的web应⽤中,虽然PHP、JSP等脚本均提供了MySQL的接⼝,但是显然直接使⽤C语⾔具有更好的安全性和性能,Michael以前⽤PHP开发的多个项⽬中就使⽤了C语⾔编写的这类接⼝,然后再编译到php⾥⾯,供php脚本直接使⽤,这⽅⾯的话题就不多说了,下⾯主要说⼀下在Linux下如何⽤C语⾔连接MySQL 数据库,并且读取⾥⾯的数据返回,同时如何进⾏编译。
c语言连接mysql
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真长。 要冷静! #
C连接mysql数据库的两种方法
C连接mysql数据库的两种方法C++连接mysql数据库的两种方法1.第1种:是利用ADO连接此种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库。
暂时只连接了mysql,sqlserver,oracle,access。
对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说2.第2种:是利用mysql自己的API函数进行连接;第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序(一)通过ADO连接MySql数据库1、通过ADO连接MySql数据库,首先得安装MyODBC服务器程序。
MyODBC版本要和MySql的版本对应上,否则会连接不上数据库。
我用的版本分别是mysql-5.1.48-win32.msi和mysql-connector-odbc-5.1.5-win32.msi。
安装好后,点击开始菜单->设置->控制面板->管理工具->数据源(ODBC)->用户DSN->添加->选择MySQL ODBC 5.1 Driver。
如下图:然后双击MySQL ODBC 5.1 Driver进行配置。
配置好可以点Test 进行下测试(如下图),如果能连上会弹出connection successful对话框。
上图中的Data Source Name:中的内容就是代码里DSN所对应的值。
例如:'DSN=MySqlODBC;server=localhost;database=test'。
**2、配置好后,就可以开始编码了。
**(1)首先导入ADO类型库。
#import 'c:\program files\common files\system\ado\msado15.dll' no_namespacerename('EOF','adoEOF')。
C语言与MySql的连接和使用(在Clion环境下)
C语⾔与MySql的连接和使⽤(在Clion环境下)第⼀次使连接C和MySql时,需要安装C语⾔的连接⼯具,可以⽤linux终端下的apt进⾏安装:sudo apt-get install libmysqlclient-dev在Clion中创建⼯程后,需要让⼯程连接libmysqlclient.so(否则编译时会报“xx未定义的引⽤”错误),在CMakeList中输⼊如下⼀⾏代码:target_link_libraries(database libmysqlclient.so)这⾥的database是⼯程名,要根据具体情况替换在编辑源⽂件时,有以下关键的⼏步:1. ⾸先要包含头⽂件#include<mysql/mysql.h>2. 初始化连接MYSQL *conn= mysql_init(NULL);/*创建数据库链接指针*/if(conn == NULL) { /*如果返回NULL说明初始化失败*/printf("mysql_init failed!\n");return EXIT_FAILURE;}/*参数依次是:conn,连接句柄,即上⾯的mysql指针;host mysql所在的主机或地址,默认“127.0.0.1”;user⽤户名,passwd密码,database_name数据库名,这三项根据⾃⼰的Mysql配置来输⼊;后⾯的都是默认,不需要修改*/conn=mysql_real_connect(conn,"127.0.0.1","root","5702","invoice",3306,NULL,0);if (conn) {printf("Connection success!\n");}else{printf("Connection failed!\n");}。
Linux下C与Mysql的混合编程
Linux下C与Mysql的混合编程1 概述MySQL 是⼀个关系型数据库管理系统。
由瑞典MySQL AB公司开发,眼下属于Oracle公司。
MySQL是最流⾏的关系型数据库管理系统。
⽀持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
为多种编程语⾔提供了API。
这些编程语⾔包含C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和Tcl等。
2 安装mysql2.1 通过⽹络安装mysql2.1.1 检查是否已经安装mysql# rpm -qa | grep mysql // 上述命令就会查看该操作系统上是否已经安装了mysql数据库有的话。
我们就通过 rpm -e 命令或者 rpm -e --nodeps 命令来卸载掉#rpm -e --nodeps mysql在删除完以后我们能够通过 rpm -qa | grep mysql 命令来查看mysql是否已经卸载成功!!2.1.2 通过yum来进⾏mysql的安装#yum install -y mysql-server mysql mysql-deve通过输⼊ yum install -y mysql-server mysql mysql-devel 命令将mysql mysql-server mysql-devel都安装好(注意:安装mysql时我们并⾮安装了mysqlclient就相当于安装好了mysql数据库了,我们还须要安装mysql-server服务端才⾏)通过yum⽅式安装mysql数据库省去了⾮常多不是必需的⿇烦。
当出现以下的结果时,就代表mysql数据库成功安装了此时我们能够通过例如以下命令,查看刚安装好的mysql-server的版本号#rpm -qi mysql-server2.2 离线安装mysql2.2.1 检查是否安装mysql⽅法同2.1.12.2.2 通过rpm安装mysql1. 须要准备离线安装包MySQL-server-5.5.30-1.el6.x86_64.rpmMySQL-client-5.5.30-1.el6.x86_64.rpmMySQL-devel-5.5.30-1.el6.x86_64.rpm2.安装新的MySQL#rpm -ivh MySQL-server-5.5.30-1.el6.x86_64.rpm#rpm -ivh MySQL-client-5.5.30-1.el6.x86_64.rpm#rpm -ivh MySQL-devel-5.5.30-1.el6.x86_64.rpm3.启动MySQL服务#service mysql start4.查看mysql执⾏状态#/etc/rc.d/init.d/mysqld status5.MySQL服务⼀些其它命令a、察看mysql是否在⾃⼰主动启动列表: #/sbin/chkconfig –listb、加⼊mysql到系统⾃启动服务组:#/sbin/chkconfig – addmysqlc、把mysql从启动服务组中删除:#/sbin/chkconfig – delmysqld、停⽌mysql服务: # service mysqld stope、脚本启动mysql服务: # /etc/rc.d/init.d/mysqld startf、脚本停⽌mysql服务:# /etc/rc.d/init.d/mysqld stop2.3 mysql设置password命令例如以下:# /usr/bin/mysqladmin -u root password '123456'2.4 mysql设置开机启动2.4.0.1 查看Mysql服务是否是开机启动命令例如以下:#chkconfig --list | grep mysqld2.4.0.2 设置开机启动命令例如以下:# chkconfig mysqld on2.5 Mysql数据库的主要配置/etc/f 这是mysql的主配置⽂件我们能够查看⼀下这个⽂件的⼀些信息# cat f[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid简要介绍./var/lib/mysql mysql数据库的数据库⽂件存放位置./var/log mysql数据库的⽇志输出存放位置3 C与Mysql3.1 Mysql C API 函数概述这⾥归纳了C API可使⽤的函数函数描写叙述mysql_affected_rows()返回上次UPDATE、DELETE或INSERT查询更改/删除/插⼊的⾏数。
MySql数据库在UnixLinux C的使用
一、MySql数据库在Unix/Linux C的使用Linux MySql数据库开发MySql与C联合开发开发库的安装MySql C API编程实例1、软件包需要1)MySql服务器mysql-server-3.23.54a-11mysql-server-3.23.58-1.92)MySql客户端mysql-3.23.54a-11mysql-3.23.58-1.93)MySql开发接口库mysql-devel-3.23.54a-11mysql-devel-3.23.58-1.92、Mysql服务配置●mysqyld服务要运行起来。
最好是设为开机自动启动。
方法:●chkconfig –level 2345 mysqld on●ntsysv●service mysqld start / stop /restart●图形方式3、Msqyl客户端命令行工具MySqyl客户端命令行工具为mysql。
其常用法为:mysql [OPTIONS] [database] <script.sql >output.tab常用参数有:-?, --help:帮助-D, --database=DB_name:指定数据库-h, --host=Host_name:指定主机-u, --user=DB_user_name:指定用户-p[…], --password[=…]:指定密码4、客户端常用命令在命令提示符下输入:mysql 或mysql –u root进入mysql系统。
提示符为―>‖,可以使用的命令有:show databases / tables;use database;create database db;create table tbl;drop database db/ table tbl;select … from tbl … where …insert … into tbl … values …update … tbl … set … where …delete … from tbl … where …4、MySql C开发接口不同版本的MySql有不同的目录设置。
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数据库。
linux下连接mysql配置
1.需要的包unixODBC源码包unixODBC-2.2.14.tar.gzmysql 驱动mysql-connector-odbc-5.1.6-linux-glibc2.3-x86-32bit.tar.gz以下配置要求root用户2.安装unixODBC解压tar xzf unixODBC-2.2.14.tar.gz进入解压目录Cd unixODBC-2.2.14配置./configure --enable-gui=no编译make安装make install3.安装MySql驱动到如下地址/downloads/connector/odbc/5.1.html下载mysql的ODBC驱动,然后安装tar zxvf mysql-connector-odbc-5.1.6-linux-glibc2.3-x86-32bit.tar.gzcd mysql-connector-odbc-5.1.6-linux-glibc2.3-x86-32bit把该目录下所有的文件拷贝到系统库目录下cp lib/* /usr/lib4.配置unixODBC5.1添加MySql驱动vi etc/odbcinst.ini写入如下内容[ForMySql]Description = MySQL ODBC 5.1 DriverDriver = /usr/local/lib/libmyodbc5.soSetup = /usr/local/lib/libmyodbc3S.soUsageCount = 1CPTimeout = 5CPReuse = 5FileUsage = 1保存退出5.2添加DSNvi etc/odbc.ini写入如下内容[TEST]Driver = ForMySqlDescription = For MySqlServer = 10.8.1.60Database = tempdbPort = 3306注意Driver驱动要写odbcinst.ini中的驱动名称,Database是数据库的名称,然后保存并退出;测试ODBC的连接isql -v TEST sa 123456会显示如下信息—————————————————————| Connected! || || sql-statement || help [tablename] || quit |测试通过;下面就可以使用freetds的api开发连接MySql数据库的程序了,可以使用c、c++编写。
linux连接mysql命令
linux连接mysql命令linux连接mysql是最基本的操作之一,对于初学者来说我们可以通过命令来连接mysql,下面由店铺为大家整理了linux下连接mysql 命令的相关知识,希望对大家有所帮助!linux连接MYSQL命令格式: mysql -h主机地址 -u用户名 -p用户密码linux连接mysql命令实例1、连接到本机上的MYSQL找到mysql的安装目录,一般可以直接键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>linux连接MYSQL命令实例2、连接到远程主机上的MYSQL假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。
则键入以下命令:mysql -h10.0.0.1 -uroot -p123(注:u与root可以不用加空格,其它也一样)退出MYSQL命令exit (回车)附:linux下有关mysql数据库方面的操作必须首先登录到mysql中,有关操作都是在mysql的提示符下进行,而且每个命令以分号结束1、显示数据库列表。
show databases;2、显示库中的数据表:use mysql; //打开库show tables;3、显示数据表的结构:describe 表名;4、建库:create database 库名;GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;5、建表:use 库名;create table 表名(字段设定列表);6、删库和删表:drop database 库名;drop table 表名;7、将表中记录清空:delete from 表名;truncate table 表名;8、显示表中的记录:select * from 表名;9、编码的修改如果要改变整个mysql的编码格式:启动mysql的时候,mysqld_safe命令行加入--default-character-set=gbk如果要改变某个库的编码格式:在mysql提示符后输入命令alter database db_name default character set gbk;10.重命名表alter table t1 rename t2;11.查看sql语句的效率explain < table_name >例如:explain select * from t3 where id=3952602;12.用文本方式将数据装入数据库表中(例如D:/mysql.txt)mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;。
C语言连接Mysql数据库
#define DATABASE "abitno"
/*这个函数用来执行传入的sql語句*/
void exe_sql(char* sql) {
MYSQL my_connection; /*这是一个数据库连接*/
int res; /*执行sql語句后的返回标志*/
}
/*不要忘了关闭连接*/
mysql_close(&my_connection);
}
}
}
int main(int argc, char *argv[]) {
/*测试下向里面插入数据*/
/*如果结果不为空,就把结果print*/
if (res_ptr) {
/*取得結果的行数和*/
column = mysql_num_fields(res_ptr);
row = mysql_num_rows(res_ptr) + 1;
if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
0, NULL, CLIENT_FOUND_ROWS)) {/*Connection success*/
printf("数据库查询query_sql连接成功!\n");
/*初始化mysql连接my_connection*/
mysql_init(&my_connection);
/*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并
在Linux下编译安装MySQL并通过C语言操作MySQL数据库
1. mysql在linux下的编译和安装[root@localhost zieckey]# mkdir /usr/local/mysql[root@localhost zieckey]# cp mysql-4.0.12.tar.gz /home/[root@localhost root]# cd /home/解压[root@localhost home]# tar zxvf mysql-4.0.12.tar.gz[root@localhost home]# cd mysql-4.0.12配置,生成Makefile[root@localhost mysql-4.0.12]# ./configure --prefix=/usr/local/mysql --without-debug --with-extra-charsets=gb2312 --enable-assembler --without-isam --without-innodb --with-pthread --enable-thread-safe-client编译[root@localhost mysql-4.0.12]# make安装[root@localhost mysql-4.0.12]# make install[root@localhost mysql-4.0.12]# scripts/mysql_install_db创建一个数据库管理员[root@localhost mysql-4.0.12]# groupadd mysql[root@localhost mysql-4.0.12]# useradd -g mysql mysql改变权限。
[root@localhost mysql]# chown -R root /usr/local/mysql[root@localhost mysql]# chown -R mysql /usr/local/mysql/var[root@localhost mysql]# chgrp -R mysql /usr/local/mysql配置环境变量,以便于编程[root@localhost mysql-4.0.12]# cd /usr/local/mysql/bin/[root@localhost bin]# export PATH=$PATH:/usr/local/mysql/bin/[root@localhost bin]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql/[root@localhost bin]# env启动mysql服务器[root@localhost root]# cd /usr/local/mysql/bin/[root@localhost bin]# ./mysqld_safe -u mysql&Starting mysqld daemon with databases from /usr/local/mysql/var查看是否启动了[root@localhost root]# pgrep mysql159311595015951启动一个mysql客户端[root@localhost root]# /usr/local/mysql/bin/mysqlWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1 to server version: 4.0.12Type 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql>创建一个数据库mysql> create database cusemysql;Query OK, 1 row affected (0.00 sec)并使用这个数据库mysql> use cusemysql;Database changed在给数据库内创建一个表mysql> create table children(childno int not null unique,fname varchar(20),age int); Query OK, 0 rows affected (0.00 sec)在该表内插入一项数据mysql> insert into children values(5,"花儿",10);Query OK, 1 row affected (0.00 sec)mysql> select * from children;+---------+-------+------+| childno | fname | age |+---------+-------+------+| 5 | 花儿| 10 |+---------+-------+------+1 row in set (0.03 sec)mysql>2. 下面进行具体的操作插入:insert好的,我们现编辑一段c代码,取名为insert.c////////////////////////////////////* insert.c */#include#include#include "mysql.h"/*注意哦,上面也可以是mysql.h的绝对地址,一般在mysql下的include目录下,仔细看看你的在哪里?*/int main(int argc, char *argv[]){MYSQL my_connection;int res;mysql_init(&my_connection);/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS)){printf("Connection success\n");res = mysql_query(&my_connection, "insert into children values(11,'Anny',5)");if (!res){printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));/*里头的函数返回受表中影响的行数*/}else{//分别打印出错误代码及详细信息fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));}mysql_close(&my_connection);}else{fprintf(stderr, "Connection failed\n");if (mysql_errno(&my_connection)){fprintf(stderr, "Connectionerror %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection)); }}return EXIT_SUCCESS;}/////////////////////////////////////////////代码写完了,要编译哦[root@zieckey mysql]# gcc -o insert insert.c/tmp/ccyHfsX2.o(.text+0x1e): In function `main':: undefined reference to `mysql_init'/tmp/ccyHfsX2.o(.text+0x47): In function `main':: undefined reference to `mysql_real_connect'/tmp/ccyHfsX2.o(.text+0x76): In function `main':: undefined reference to `mysql_query'/tmp/ccyHfsX2.o(.text+0x9a): In function `main':: undefined reference to `mysql_affected_rows'/tmp/ccyHfsX2.o(.text+0xbc): In function `main':: undefined reference to `mysql_error'/tmp/ccyHfsX2.o(.text+0xcf): In function `main':: undefined reference to `mysql_errno'/tmp/ccyHfsX2.o(.text+0xf5): In function `main':: undefined reference to `mysql_close'/tmp/ccyHfsX2.o(.text+0x11f): In function `main':: undefined reference to `mysql_errno'/tmp/ccyHfsX2.o(.text+0x135): In function `main':: undefined reference to `mysql_error'/tmp/ccyHfsX2.o(.text+0x148): In function `main':: undefined reference to `mysql_errno'collect2: ld returned 1 exit status[root@zieckey mysql]#头文件和库文件位置没有指定[root@zieckey mysql]# gcc -o insert insert.c -I/usr/include/mysql/ -L/usr/lib/mysql/ /tmp/cc4gdmlp.o(.text+0x1e): In function `main':: undefined reference to `mysql_init'/tmp/cc4gdmlp.o(.text+0x47): In function `main':: undefined reference to `mysql_real_connect'/tmp/cc4gdmlp.o(.text+0x76): In function `main':: undefined reference to `mysql_query'/tmp/cc4gdmlp.o(.text+0x9a): In function `main':: undefined reference to `mysql_affected_rows'/tmp/cc4gdmlp.o(.text+0xbc): In function `main':: undefined reference to `mysql_error'/tmp/cc4gdmlp.o(.text+0xcf): In function `main':: undefined reference to `mysql_errno'/tmp/cc4gdmlp.o(.text+0xf5): In function `main':: undefined reference to `mysql_close'/tmp/cc4gdmlp.o(.text+0x11f): In function `main':: undefined reference to `mysql_errno'/tmp/cc4gdmlp.o(.text+0x135): In function `main':: undefined reference to `mysql_error'/tmp/cc4gdmlp.o(.text+0x148): In function `main':: undefined reference to `mysql_errno'collect2: ld returned 1 exit status[root@zieckey mysql]#gcc还是找不到头文件,下面我们可以这样,指定gcc专门找mysqlclient 之类的库[root@localhost testmysql]# gcc -o insert insert.c -lmysqlclient -I/usr/local/mysql/include/mysql/ -L/usr/local/mysql/lib/mysql我用用-lmysqlclient 选项就可以了(前面我们生成的库文件是libmysqlclient.so.12.0.0 等, 去掉前面的lib和后面的版本标志,就剩下mysqlclient 了所以是-lmysqlclient )。
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 。
在linux下用C语言访问、操作mysql数据库
MySQL中文参考手册/doc/database/mysql_manual/manual_toc.html三、MySQL客户端应用的开发确认MYSQL服务器已经启动采用了MySQL的C API进行开发。
创建文件testmysql.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/mysql.h>typedef int BOOL;enum { FALSE = 0, TRUE = 1 };#define err_info(s) (printf( "ERR:[F:%s L:%d FUN:%s] %s\n ",__FILE__,__LINE__,__FUNCTION__,s));int main( int argc, char * argv[] ){char szTargetDSN[] = "test ";char szSqlText[500]= " ";char aszFlds[ 25 ][ 25 ];MYSQL * myData ;MYSQL_RES * res ;MYSQL_FIELD * fd ;MYSQL_ROW row ;int i,j,k;BOOL bCreate =FALSE;if ( (myData = mysql_init((MYSQL*) 0))//初始化数据结构&& mysql_real_connect( myData, NULL,//连接数据库"root ", " your_password ", szTargetDSN,MYSQL_PORT, NULL, 0 ) ){if(bCreate){sprintf(szSqlText, //构造SQL语句"create table mytable "//新建一张表"(time datetime, s1 char(6), ""s2 char(11), s3 int, s4 int) ");if (mysql_query( myData, szSqlText))//执行SQL语句{//执行SQL语句出错err_info( "Can‘t create table ") ;mysql_close( myData ) ;return FALSE ;}}sprintf(szSqlText,"insert into mytable "//向表中插入数据"values(‘2000-3-10 21:01:30‘, "//注意时间的格式"‘Test‘,‘MySQLTest‘,2000,3) ");if (mysql_query( myData, szSqlText)){//执行SQL语句出错err_info( "Can‘t insert data to table ") ;mysql_close( myData ) ;return FALSE ;}sprintf(szSqlText, "select * from mytable ");if (mysql_query( myData, szSqlText))//进行数据检索{//执行SQL语句出错mysql_close( myData ) ;return FALSE ;}else{res = mysql_store_result( myData ) ;//取得查询结果i = (int) mysql_num_rows( res ) ;//取得有效记录数printf( "Query: %s\n%ld records found:\n ", szSqlText, i ) ;for ( i = 0 ; fd = mysql_fetch_field( res ) ; i++ )strcpy( aszFlds[ i ], fd-> name ) ;//取得各字段名for (i=1; row = mysql_fetch_row( res ); )//依次读取各条记录{j = mysql_num_fields( res ) ;//取得记录中的字段数printf( "Record #%ld:-\n ", i++ ) ;for ( k = 0 ; k < j ; k++ )//输出各字段的值printf( " Fld #%d (%s): %s\n ", k + 1, aszFlds[ k ],(((row[k]==NULL)(!strlen(row[k])))? "NULL ":row[k])) ;puts( "==============================\n " ) ;}mysql_free_result( res ) ;}}else{//连接数据库出错err_info( "Can‘t connect to the mysql server ") ;mysql_close( myData ) ;return FALSE ;}mysql_close( myData ) ;return TRUE ;}---- 对其中几个函数作简单说明,详细说明,可参考MySQL文档:---- 1. MYSQL *mysql_init(MYSQL *mysql)---- 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。
linux下C语言连接MySQL数据库
#include <stdlib.h>#include <stdio.h>#include <string.h>#include <mysql/mysql.h> // MySQL头文件int main(int argc, char *argv[]) {int t, r;char *query;MYSQL *conn_ptr;MYSQL_RES *res;MYSQL_ROW row;// 初始化一个类型为MYSQL的数据结构conn_ptr = mysql_init(NULL);if (!conn_ptr) {fprintf(stderr, "mysql_init failed\n");return EXIT_FAILURE;}// 与MySQL数据库引擎建立连接。
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "username", "password", "tablename", 0, NULL, 0); /*注意参数:username:mysql数据库的用户名password:数据库密码tablename:表名*/if (conn_ptr) {printf("Connection success\n");}else {printf("Connection failed\n");}query = "select * from student";// 执行query字符串中的SQL语句t = mysql_real_query(conn_ptr, query, (unsigned int)strlen(query) );if (t){printf("Error making query: %s\n", mysql_error(conn_ptr));}else{printf("Query made...\n");1 / 2// 获取语句执行的返回结果。
c语言连接mysql完整演示
c 语⾔连接mysql 完整演⽰1.连接数据库代码2.创建数据库 语句C语⾔连接mysql时,注意事项:3.开发环境,如果你是没有环境,直接⽤gcc那么,执⾏下⾯命令4.使⽤Clion开发环境问题前⾯步骤都⼀样,操作步骤:1->2->4使⽤clion和gcc最⼤的差别就是:clion得修改⼀下CMakeLists.txt⽂件#include <stdio.h>#include <mysql/mysql.h>int main() { MYSQL *conn; //创建⼀个指向mysql 数据类型的指针 conn=mysql_init(NULL); //mysql 的初始化 if (!conn) //判断是否初始化成功 { printf("mysql 初始化失败!\n"); return EXIT_FAILURE; } conn =mysql_real_connect(conn,"localhost","lewis","123","test",0,NULL,0); //⽤户名为lewis,密码为123,连接的数据库为test if (conn) { printf("数据库连接成功!\n"); } else printf("数据库连接失败!\n"); mysql_close(conn); //关闭mysql 连接 return 0;}CREATE DATABASE test(name varchar(20),num int(4),sex char(4));1.⾸先明确,我的系统是ubuntu,我的mysql 是5.7*版本2.使⽤c 语⾔管理mysql 数据库,⾸先,我们需要安装在linux 下操作mysql 的多依赖库,命令如下: //如果你有clion 集成开发环境,那么⼀般这个都是有的,但以防万⼀,你还是下载试⼀下.sudo apt-get install libmysqlclient-dev sudo apt -get install libmysqld-devgcc -g -o demo -I /usr/include/mysql/ demo.c -L /usr/lib64/mysql/ -lmysqlclient -lz //意思是:将demo.c ⽂件编译为可执⾏⽂件demo,同时使⽤/user/include/mysql ⽬录作为优先头⽂件演⽰和分析见://main.c 是你所要编译的源⽂件//mysql -o 后的mysql 是⾃定义⽣成的⽂件名//补充⼀点gcc 知识,其实你也可以去linux ⾥⾯,输⼊man gcc ⾃⼰去看命令1.gcc -o ⽂件名 //指定输出的⽂件名,默认⽂件名为:⽂件名.out 2.gcc -c ⽂件名 //编译或者汇编源⽂件,但不链接3.gcc -g 头⽂件⽬录 //可执⾏程序包含调试信息,加g 选项是为了,⽣成调试信息供gdb 调试,不加g ⽆法⽤gdb 调试4.gcc -I //指定使⽤的⽬录作为第⼀个寻找使⽤的头⽂件⽬录reference:cmake_minimum_required(VERSION 3.17)project(job C)set (CMAKE_C_STANDARD 99)//重要注释:必须看啊1.target_link_libraries中的CProjectName替换成实际你的C语⾔项⽬名称)2.target_link_libraries中引⼊的链接库为mysqlclient,⽽不是libmysqlclient,使⽤libmysqlclient会报错 划重点报错如下:所以⼀定要注意这⾥3.查看mysql.h⽂件⽬录CLion下连接数据库结果如下://上边是CMakeLists.txt 原本的内容,不要修改//下边是要添加和修改的内容add_executable(job main.c)target_link_libraries(CProjectName mysqlclient====================[ Build | job | Debug ]=====================================/opt/clion/clion-2020.3.2/bin/cmake/linux/bin/cmake --build /home/lewis/program/c/job/cmake-build-debug --target job -- -j 6Scanning dependencies of target job[ 50%] Building C object CMakeFiles/job.dir/main.c.o[100%] Linking C executable job/usr/bin/ld: 找不到 -llibmysqlclientcollect2: error: ld returned 1 exit statusCMakeFiles /job.dir/build.make:103: recipe for target 'job' failedmake[3]: *** [job] Error 1CMakeFiles /Makefile2:95: recipe for target 'CMakeFiles/job.dir/all' failedmake[2]: *** [CMakeFiles/job.dir/all] Error 2CMakeFiles /Makefile2:102: recipe for target 'CMakeFiles/job.dir/rule' failedmake[1]: *** [CMakeFiles/job.dir/rule] Error 2Makefile:138: recipe for target 'job' failedmake: *** [job] Error 2查看mysql ⽂件,1./usr/include/是否存在mysql.h ,若存在,在c 语⾔中使⽤时⽤ #include <mysql.h>2.若不存在,请看下⼀级⽬录/usr/include/mysql/,若存在mysql.h,c 语⾔中请使⽤ #include <mysql/mysql.h>很好测试,直接去⽬录⾥⾯找,或者在Clion 中看是否有代码提⽰。
Linux下实现C++操作Mysql数据库
Linux下实现C++操作Mysql数据库想⽤C++写项⽬,数据库是必须的,所以这两天学了⼀下C++操作MySQL数据库的⽅法。
也没有什么教程,就是在⽹上搜的知识,下⾯汇总⼀下。
连接MySQL数据库有两种⽅法:第⼀种是使⽤ADO连接,不过这种只适合Windows平台;第⼆种是使⽤MySQL⾃⼰的C API函数连接数据库。
我是在Linux平台下开发,所以就采⽤第⼆种⽅法,有很多Api函数,但是常⽤的就⼏个,我也是就⽤到其中的⼏个。
API函数1.mysql_real_connect()连接⼀个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 long client_flag)如果连接成功,返回MYSQL*连接句柄。
如果连接失败,返回NULL。
对于成功的连接,返回值与第1个参数的值相同2.mysql_query()执⾏指定”以NULL终结的字符串”的SQL查询返回⼀个结果表,假定查询成功,可以调⽤ mysql_num_rows() 来查看对应于 SELECT 语句返回了多少⾏,或者调⽤ mysql_affected_rows() 来查看对应于 DELETE,INSERT,REPLACE 或 UPDATE 语句影响到了多少⾏。
3.mysql_store_result()MYSQL_RES *mysql_store_result(MYSQL *mysql)检索完整的结果集⾄客户端。
客户端处理结果集最常⽤的⽅式是通过调⽤mysql_store_result(),⼀次性地检索整个结果集。
该函数能从服务器获得查询返回的所有⾏,并将它们保存在客户端。
Linux下C++访问Mysql数据库增删改查
Linux下C++访问Mysql数据库(增删改查及事务提交和回滚操作)一、C++对Mysql数据库的增删改查操作在这个程序中,实现了通过 C++ 对数据表进行添加,修改,插入,删除的功能。
头文件-myDB.h:#ifndef myDB_class#define myDB_class#include <iostream>#include <string>#include <mysql/mysql.h>class myDB{public:myDB();~myDB();int initDB(std::string host, std::string user, std::string password, std::string db_name);void Run();private:int exeSQL();int insertSQL();int deleteSQL();int updateSQL();MYSQL *connection;MYSQL_RES *result;MYSQL_ROW row;};#endifmyDB.cpp#include "myDB.h"#include <iostream>#include <cstdlib>using namespace std;myDB::myDB(){connection = mysql_init(NULL); // 初始化数据库的连接变量if(connection == NULL){std::cout << "error:" << mysql_error(connection);exit(1); // exit(1)表示发生错误后退出程序, exit(0)表示正常退出}}myDB::~myDB(){if(connection != NULL){mysql_close(connection); // 关闭数据库连接}}int myDB::initDB(std::string host, std::string user, std::string password, std::string db_name){char value = 1;mysql_options(connection_,MYSQL_OPT_RECONNECT,(char*)&value);//mysql自动重连connection = mysql_real_connect(connection, host.c_str(), user.c_str(), password.c_str(), db_name.c_str(), 0, NULL, 0); // 建立数据库连接if(connection == NULL){std::cout << "error:" << mysql_error(connection);exit(1); // exit(1)表示发生错误后退出程序, exit(0)表示正常退出}return 0;}int myDB::exeSQL(){// mysql_query()执行成功返回0,失败返回非0值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
else
{
printf("Query made...\n");
}
// 获取语句执行的返回结果。
res=mysql_use_result(conn_ptr);
for(r = 0; r <= mysql_field_count(conn_ptr); r++)
{
printf("%s &n");
}
mysql_close(conn_ptr);
return 0;
}
// 用以下命令使用 GCC 编译 这个 C源文件.(linux系统要安装GCC和 MySQL嵌入式开发包)
MYSQL *conn_ptr;
MYSQL_RES *res;
MYSQL_ROW row;
// 初始化一个类型为MYSQL的数据结构
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
"test", 0, NULL, 0);
if (conn_ptr) {
printf("Connection success\n");
}
else {
printf("Connection failed\n");
}
// 执行query字符串中的SQL语句
t = mysql_real_query(conn_ptr, query, (unsigned int)strlen(query) );
if (t)
{
printf("Error making query: %s\n", mysql_error(conn_ptr));
#include <stdlib.h>
#include <stdio.h>
#include <mysql/mysql.h> // 要把MySQL头文件設置好
int main(int argc, char *argv[]) {
int t, r;
char *query;
{
// 取回结果集中的下一条记录 。
row = mysql_fetch_row(res);
if(row < 0)
break;
// 获得一条记录中的各个字段
for(t = 0; t < mysql_num_fields(res); t++)
// gcc -o C_MySQL_o -g C_MySQL.c -lmysqlclient�
fprintf(stderr, "mysql_init failed\n");
return EXIT_FAILURE;
}
// 与MySQL数据库引擎建立连接。
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "root",
//query = "delete from stu where name = 'c'";
//t=mysql_real_query(conn_ptr,query, (unsigned int)strlen(query) );
query = "select * from stu";