您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 传智播客mysqlapi讲解
  所属分类: C++
  开发工具:
  文件大小: 256kb
  下载次数: 0
  上传时间: 2019-01-11
  提 供 者: qq_29******
 详细说明:传智播客2014年第4期的mysql资料,王保明老师讲解的,轻松入门实战应用 传智播客 ref. gxx_personality vo]+0X0): undefined reference to gxx_ persona lity vo /usr/ib64/ mysql/ libmysqlclient. a(password. c o): In function scramble 323 /pb2/build/sb0-12734909-140611330548/rpm/BUILD/ mysqlcom-pro-5620/ mysqlcom -pro-5.6.20/sql/password. c: 184: undefined reference to floor /pb2/build/sb 0-12734909-1406113305.48/rpm/BUILD/ mysqlcom-pro-5.6. 20/ mysqlcom pro-5.6.20/ sql/password. c: 184: undefined reference to floor /pb2/build/sb 0-12734909-140611330548rpm/BUILD/mysqlcom-pro-5620/mysqlcom pro-5.6.20/ sql/password. c: 184: undefined reference to floor /pb2/build/sb 0-12734909-140611330548/rpm/BUILD/mysqlcom-pro-5620/ mysqlcom pro-5.6.20/ sql/password. c: 184: undefined reference to floor /pb2/build/sb0-12734909-140611330548rpm /BUILD/ mysqlcom-pro-56 20/ mysqlcom -pro- 5.6.20/sql/password. c: 184: undefined reference to floor usr/lib64/ mysql/libmysqlclienta(password. c o): /pb2/build/sb0-12734909-1406113305 48/rpm/BUILD/'mysqlcom-pro-5620/ mysqlcom-pro-5620/sql/password. c: 184: more undefined references to floor follow /usr/lib64/ mysql /libmysqlclient a( my_ getsystime c o) In function 'my_getsystime' 口典型错误3 dmo1helo.c::警告:初始化将指针赋给整数,未作类型转换 /导致没有链接 libstdc+,so /usr/lib64/ mysql/ ibmysqlclient a(net serv.cc. o): (data. DW. ref. gxx_personality vO[DW ref. gxx_personality v0]+OXO): undefined reference to gxx_personality vO MySQL开发环境GCC写法 u gcc-o dm01 hello dm01 hello. c-1/usr/include/ mysql -L/usr/lib64/mysql-lmysqlclient IdI-Ipthread -Im -Irt -lstdc++ MySQL开发环境 makefile写法 PHONY: clean‖l CC=gCC CFLAGS=-Wall-g LFLAGS=-L/usr/lib64/ mysql -Imysqlclient-ld-Ipthread-Im-Irt-lstdc++ BIN=dmol hello dmo query al:」(B|N) 0:%C S(CC)S(CFLAGS)-CS< -o S dm01 hello dm01 hello, o S(CC)S(CFLAGS)SA S(LFLAGS)-o 5 轻松入门实战应用 传智播客 dm02_ query: dm02 queryo S(CC)S(CFLAGS)SA S(LFLAGS)-o 5 clean rm-f*o S(BIN) 2MYSQL C API CRUD 2 MYSQL C API的常用函数 数据类型 ■ MYSQL 该结构代表1个数据库连接的句枘。儿乎所有的 MYSQL函数均使用它 MYSQL RES 该结构代表返回行的查询结果 ■ MYSQL ROW √这是1行数据的”类型安全”表示 ■ MYSQL F|ELD √该结构包含关于字段的信息,如字段名、类型和大小等 ■ MYSQL FIELD OFFSET √这时 MYSQL字段刎表偏移量的”类型安全”表示 ■ my ulonglong 用于行数以及 mysql affected rows)、 mysql num rows()和 mysql insert id( 的类型 编程步骤 ■1通过调用 mysql library_init(,初始化 MYSQL库 2通过调用 mysql init()初始化连接处理程序,并通过调用 mysql real connect()连接 到服务器 3发出SQL语句并处理其结果 4通过调用 mysql close(,关闭与 MYSQL服务器的连接 5通过调用 mysql library end(),结東 MYSQL库的使用 数据库连接 初始化一个连接句枘结构 #include 轻松入门实战应用 传智播客 MYSQL "mysql init(MYSQL * ) 和数据库建立物理连接 MYSQL "mysqlreal _connect(MYSQL*connection, const char server host, const char *sql user name const char *sql password const char *db name, unsigned int port number, const char unix socket name, unsigned int flags) 连接参数 Int mysql options(MYSQL*connection, enum option to set, const char argument) enum Option Actual Argument Type Description MYSQL OFT cons: unsigned int* The number of seconds to wait 吧 T TNDUI before timing out a connection. MYSQL OET_ COMPFESS NEne, use NULL Use compression on the network connection MYSOL IIT COMAND Command to send each time a con- nection is established 错误处理 unsigned int mysql errno(MYSQL*connection); 对于由mysq指定的连接,该函数返回最近调用的AP|函数的错误代码,该函数调用可 能成功也可能失败。”0返回值表示未出现错误 char mysql error(MYSQL * connection) 如果想获得错误的文木信息,可以调用该函数 执行SQL语句 int mysql query( MYSQL * mysql const char *query 功能描述 执行由”Nu终结的字符串”査询指向的SQL查询。正常情况下,字符串必 须包含1条SQL语句,而且不应为语句添加终结分号或”lg 不能用于包含二进制数据的查询,应使用 mysql real query来完成 对于操纵语句 My ulonglong mysql affected rows(MYSQL *mysql) 返回上次操纵语句所涉及到记录的行数 语句,该函数的工作方式与 mysql_ num rows0(e后立刻 ■对于 UPDATE、 DELETE或 INSERT语句,可在 mysql q 调用。对于 SELEC 对于查询语言 轻松入门实战应用 传智播客 ■ MYSQL RES“ mysql store result( MYSQL*mysq) 功能说明 对于成功检索了数据的每个查询,必须调用 mysql_ store result0或 mysql use resulto 该函数将查询的全部结果读取到客户端,分配1个 MYSQL RES结构,并将 结果置于该结构中 可以通过 mysql num rows米找出结果集中的行数 事务处理 my bool mysql autocommit(MYSQL mysql, my bool mode 凼数说明:如果模式为1,启动 autocommit模式;如果模式为0,禁止 autocommit模式 my bool mysql commit(mYSQl mysql √提交当前事务 ly bool mysql rollback(MYSQL * mysql) √回滚当前事务 处理结果集 MYSQL ROW mysql fetch row(MYSQL RES result 功能描述 √检索结果集的下一行 行内值的数目由 mysql num fields( result)给出 可以调用 mysql fetch lengths(来获得行中字段值的长度 void mysql data seek(MYSQl RES result, my _ulonglong offset 功能描述: 在查询结果集中寻找任意行。偏移值为行号。 √该函数要求结果集结构包含查询的所有结果 MYSQL ROW OFFSET mysql row tell( MYSQL RES *result 返回光标的当前位置 MYSQL ROW OFFSET mysql row seek(MYSQL RES *result, MYSQL ROW OFFSET offset 将行光标置于查询结果集中的任意行 每次接收一行数据 ∧ YSQL RES“ mysql_use_ result(MYSQL mysql) 功能说明 不像 mysql store result(那样把结果集实际读取到客户端。它必须通过对 mysql fetch row(的调用,对每一行分别进行检索 Mysql store result(相比,速度更伙而且使用的内存更少 轻松入门实战应用 传智播客 多查询执行的cAP处理 支持在单个字符串中指定的多语句的执行。要想与给定的连接一起使用该功能,打 开连接时,必须将标志参数中的 CLIENT MULTI STATEMENTS选项指定给 ysql real connect 也可以通过调用 mysql set server option( MYSQL OPTION MULTI STATEMENTS ON),为有的连接设 置它 mysql query (mysql" DROE TABLE IF EXISTs test table: CREATE TTABLE七 eat tab1e(i彐INr)x 工 NSERT工N工 test table VALUEs:10: UPDATE test table sET id=20 WHERE id=10:\ E工已c工· Ro test t1e: ROP TARTR1.31.L.nh1+甲) 详细api列表 MYSQL *mysql init(MYSQL *mysql 口分配或初始化与 mysql real connect口)相适应的 MYSQL对象 口如果mysq是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化 对象,并返回对象的地址 如果 mysql_init(分配」新的对象,当调用 mysql close()来关闭连接时。将释放该对 象 void mysql close mYSQl "mysql) 口关闭前面打开的连接 口如果句柄是由 mysql init()或 mysql connect)自动分配的, mysql close(还将解除分配 由mysq指向的连接句柄。 ysq1ree1 connect函数 O 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) 口函数功能:尝试与运行在主机上的MysαL数据库引擎建立连接 o connect mysql real connect(&mysql, "localhost,"root, "123456","mydb2,0,NULL 0); 查询 mysql_ query函数和 mysql real query(函数 u int mysql query mysQL *mysql, const char *query) o int mysql real query(MYSQL *mysql, const char *query, unsigned long length) 口对于包含二进制数据的查询,必须使用 mysql real query()而不是 mysql query(), 口 mysql_ rea_ query)比 mysql query(快,这是因为它不会在查询字符串上调用 strlen() 轻松入门实战应用 传智播客 获取结果集api mysql store resu|t()数和 mysql use result u MYSQL RES 'mysql store result(mySQL mysql) 口 mysql store result()将查询的全部结果读取到客户端,分配1个 MYSQL RES结构, 并将结果置于该结构中 口可调用 mysql num rows0)来找出结果集中的行数。可以调用 mysql fetch row来获 取结果集中的行,或调用 mysql_row seek()和 mysql_row tel()来获取或设置结果集 中的当前行位置 口一旦完成了对结果集的操作,必须调用 mysql free resulti0) MYSQL RES* mysql use_ result( MYSQL*mysq)每次接收一行数据 口功能说明: 口不像 mysql_ store result(那样把结果集实际读取到客户端。它必须通过对 mysql fetch_ row(的调用,对每·行分别进行检索 口 Mysql store_ result(相比,速度更快而且使用的内存更少 22调用思路分析 1简介 访问MyS⑨L服务器,这需要使用 mysqlclient库, MySQL的大多数客户端API(除了 Java和.NET)都是通过这个库来和 MYSQL服务器通讯的,而这个库正是用C编写的 2代码编写和编译 3连接 My SQL服务器 初始化一个MYSL结构,该结构在几乎所有的 My SQL C API函数(除了预处理语句相关 的函数)中都会用到。 MYSQL*mysq1init(YSQL*mysq1) 连接 My SQL服务器使用 MYSQL my sq! real connect( MYSQL my sql, const char米host, const char *user, const char *passwd, const char *db, uns igned int port, cons t char unix socket, unsigned long client flag) 也可另一和方式来进行连接。先用 MYSQL READ DEFAULˆFILE作为选项名来调用 mysql options(),再调用 mysql real connect(来连接服务器 mysql options(*mysql, MYSQL READ DEFAULT FILE, my cnf") lysql rcal connect(=mysql, NULL, NULL, NULL, NULL, 0, NULL, 0) 说明:my.cnf文件中记录了连接 My SQL服务器所需的各项参数(地址,端口,用户名,密 码,数据库,字符集,[nixSαcket等)。这样可以灵活的修改连接参数而不必重新编译程 轻松入门实战应用 传智播客 序 要关闭连接,则调用 mysql close void mysql close(MySQL *mysql) 4执行査询 1)调用 mysql query(来执行SL语句,如果语句中包含二进制数据,则需要调用 mysql real query int mysql query(MYSQL *mysal, const char *stmt str) int mysql real query(MYSQL *mysql, const char stmt str, unsigned long length) 2)若执行的是 UPDATE, DELETE或 INSERT语句,则可通过 mysql affected rows(获知 受影响的记录数。 my ulonglong my sql affected rows( MYSQL*mysq1) 还可以通过 mysql insert id(来获取由最近的 UPDATE或 INSERT语句生成的自增值 my ulonglong mysql insert id (MYSQL. *my sql) 3)若执行的是 SELECT语句,则有两种方式来获取结果集。 3-1)一种方式是通过 mysql store result(将整个结果集全部取回来。 MYSQL RES *my sql store result(MYSQL *mysql 3-2)另·种方式则是调用 mysql use result(初始化获取操作,但暂吋不取回任何记录 7SQL RES *mysql use result(MYSQL *my sql) 3-3炳种方法均通过 ny syl fetch row来访问每一条记录 MYSQL ROW mysql fetch row(MYSQL RES *result) 注意:若先前调用的是 mysql store result(,则直接在本地访问记录:若先前调用 的是 mysql use result(,则此时才到服务器上去获取记录。 4)当处理完结果集后,调用 mysql free result(来释放它所占的内存。void mysql free result(MYSQL RES result) 5)可调用 mysql errno()和 mysql error(来获知最近执行的APT函数的错误代码和错误信 unsigned int mysql errno(MYSQL mysql const char mysql error (mysQl mysql) 5.预处理语句( Prepared Statements) My SQL C API还提供了另一种方式来执行SQL语句,即先预处理( prepare)「执行 轻松入门实战应用 传智播客 ( execute).对于多次执行的SQL语句,该方式可以提高其执行效率。具体步骤如下: 1.调用 mysql stmt init创建语句句柄,该句柄在随后的函数调用中都要用到。 MYSQL STMT mysql stmt init(MYSQL *mysql 2.调用 mysql stmt prepare(对SQL语句进行预处埋 int mysql stmt prepare( MysQL stmt *stmt, const char *stmt str, unsigned long length 3.如果SQL语句中有参数,则需要请用 mysql stmt bind param(进行参数绑定 my bool mysql stmt bind param (MYSQL STMT *s tmt, MYSQL BIND * bind 如果参数的类型为TEXT或BLOB,并且数据量很大,可以调用 mysql stmt send long data(来向服务器发送数据。 my bool mysql stmt send long data(MYSQL STMT *stmt, unsigned int parameter number, const char *data, unsigned long length) 4.调用 mysql stmt execute(来执行查询。 nt mysql stmt execute( MYSQL STMT *stmt 5.若查询不广生结果集,可以调用 sql stmt affected rows( Ful my ulonglong mysql stmt insert id(MYSQL STMT*stmt)来获得被改变的记录数和生 成的自增值。 my ulonglong mysql stmt affected rows (MYSQL STMT *stmt) my ulonglong mysql stmt insert id (MYSQL STMT *stmt 否则,执行 mysql stmt bind result(对结果集中的字段进行绑定 my bool mysql stmt bind result(MYSQL STmT *stmt, MYSQL BIND *bind) 6.调用 mysql stmt fetch(来逐行获取结果集中的记录。 Int my tmt fetch(MYSQL STMT stmt) 在调用 mysql stmt fetcho之前,还可以执行 my sql stmt store resulto将结果 集预先缓存到本地 int mysql stmt store result (MYSQL STMr *stmt 7.重复步骤3-6,每次使用不同的实参来执行查询 8.调用 ny sql stmt close(关闭句枘,释放资源 my bool my sql stmt close(MYSQL STMT *
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 传智播客mysqlapi讲解
 输入关键字,在本站1000多万海量源码库中尽情搜索: