360推广 网站建设,推广引流方法有哪些?,哪个公司的网络最好用,苏州网站设计哪家公司好2011-05-09 wcdj可以通过许多不同的编程语言来访问MySQL#xff0c;例如#xff0c;C#xff0c;C#xff0c;Java#xff0c;Perl#xff0c;Python#xff0c;Tcl#xff0c;PHP等。本文主要总结使用C语言接口如何访问MySQL数据。(一) 连接例程(二) 错误处理(一) 连接…2011-05-09 wcdj可以通过许多不同的编程语言来访问MySQL例如CCJavaPerlPythonTclPHP等。本文主要总结使用C语言接口如何访问MySQL数据。(一) 连接例程(二) 错误处理(一) 连接例程用C语言连接MySQL数据库包含两个步骤(1) 初始化一个连接句柄结构。使用mysql_init 来初始化连接句柄。(2) 实际进行连接。使用mysql_real_connect来向一个连接提供参数。其余步骤(3) 使用完连接之后使用 mysql_close 关闭连接。(4) mysql_options用于设置选项。注意仅能在 mysql_init 和 mysql_real_connect 之间调用。mysql_options 一次只能设置一个选项所以每设置一个选项就得调用它一次。具体过程如下登录mysql$ mysql -u root -p输入密码创建一个本地用户wcdjmysql GRANT ALL ON *.* TO wcdjlocalhost IDENTIFIED BY secretpassword; (注意最后的分号)退出root用户mysql /qBye登录新创建的用户wcdj$ mysql -u wcdj --passwordsecretpassword创建一个新的数据库newdatabasemysql CREATE DATABASE newdatabase;退出wcdj用户mysql /q编写create_children.sql 文件用于创建表和添加数据。---- Create the table children--CREATE TABLE children (childno int(11) NOT NULL auto_increment,fname varchar(30),age int(11),PRIMARY KEY (childno));---- Populate the table children--INSERT INTO children(childno, fname, age) VALUES (1, wcdj, 21);INSERT INTO children(childno, fname, age) VALUES (2, gerry, 22);INSERT INTO children(childno, fname, age) VALUES (3, echo, 23);登录mysql$ mysql -u wcdj --passwordsecretpassword newdatabase (注意后面的newdatabase用于指定使用的数据库)在新的数据库newdatabase中创建表children并添加数据mysql /. create_children.sql查看新添加的数据SELECT * from children;1 wcdj 212 gerry 223 echo 23connect1.c#include #include #include mysql.hintmain(){MYSQL *conn_ptr;conn_ptr mysql_init(NULL);if(!conn_ptr){fprintf(stderr, mysql_init failed/n);returnEXIT_FAILURE;}conn_ptr mysql_real_connect(conn_ptr, localhost,wcdj,123,newdatabase, 0, NULL, 0);if(conn_ptr){printf(Connection success/n);}else{printf(Connection failed/n);}mysql_close(conn_ptr);returnEXIT_SUCCESS;}编译程序$ gcc -I/usr/include/mysql connect1.c -L/usr/lib/mysql -lmysqlclient -o connet1测试$ ./connect1Connection success$(二) 错误处理(1) unsigned int mysql_errno(MYSQL *connection); (错误码)(2) char *mysql_error(MYSQL *connection); (文本错误信息)可以通过调用 mysql_errno 并传递连接结构来获得错误码它通常都是非0值。如果未设定错误码它将返回0。注意因为每次调用库都会更新错误码所以你只能得到最后一个执行命令的错误码。但是上面列出的两个错误检查例程是例外它们不会导致错误码的更新。也可以调用 mysql_error 来提供有意义的文本信息而不是单调的错误码。这些信息被写入一些内部静态内存空间中所以如果想保存错误文本你需要把它复制到别的地方。注意当调用 mysql_real_connect 时会遇到一个问题因为它在失败时返回NULL指针并没有提供一个错误码。但如果你将连接句柄作为一个变量那么即使 mysql_real_connect 失败你仍然能够处理它。connect2.c使用非动态分配的连接结构以及编写一些基本的错误处理代码。#include #include #include mysql.hintmain(){MYSQL my_connection;mysql_init(my_connection);if(mysql_real_connect(my_connection,localhost,wcdj,123,newdatabase, 0, NULL, 0)){printf(Connection success/n);mysql_close(my_connection);}else{fprintf(stderr, Connection failed/n);if(mysql_errno(my_connection)){fprintf(stderr, Connection error %d: %s/n, mysql_errno(my_connection),mysql_error(my_connection));}}returnEXIT_SUCCESS;}编译程序$ gcc -I/usr/include/mysql connect2.c -L/usr/lib/mysql -lmysqlclient -o connet2假设当前没有创建 newdatabase 这个数据库运行 connect2 将提示如下错误信息测试$ ./connect2Connection failedConnection error 1049: Unknown database newdatabase登录mysql$ mysql -u wcdj --password123创建一个新的数据库newdatabasemysql CREATE DATABASE newdatabase;退出wcdj用户mysql /q再此测试 connect2Connection success修改 connect2.c 中的密码 123 为一个错误的密码再测试会提示如下错误信息Connection failedConnection error 1045: Access denied for user wcdjlocalhost (usig password: YES)参考Linux 程序设计(第4版)第8章 P.283