Linux环境下如何用C语言编写MySQL数据库应用程序?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2296个文字,预计阅读时间需要10分钟。
1. 开发环境准备: - 首先确保安装好Linux系统。 - 接着安装MySQL系列软件包,如MySQL 5.0版本的`mysql-server`和`mysql`。
2. 环境配置: - 确保Linux系统安装完善。 - 安装MySQL软件包。
一、开发环境的准备1、首先要安装好Linux2、安装MySQL系列软件包这边是MySQL5.0版本mysql-servermysql 一、开发环境的准备 1、首先要安装好Linux, 2、安装MySQL系列软件包,这边是MySQL5.0版本: mysql-server mysql-client libmysqlclient15-dev 二、检查MySQL服务的状态 1、查看当前的mysql服务状态 sudo /etc/init.d/mysql status 2、也可以用以下检查mysql服务是否有启动,如果结果为空,则没有启动: sudo netstat -tap | grep mysql 或 ps -ef | grep mysql 三、启动/停止/重启MySQL服务 1、启动:sudo /etc/init.d/mysql start 2、停止:sudo /etc/init.d/mysql stop 3、重启:sudo /etc/init.d/mysql restart 四、在命令行使用MySQL客户端访问数据库 1、访问本地主机: mysql -uuser -ppassword db_name 2、访问远程主机: mysql -hhost -uuser -ppassword db_name 备注:由于默认的配置是只能从本机访问,只要注释掉/etc/mysql/my.cnf里面的bind-address这行,就可以让远程主机访问了。 3、执行管理操作: 使用mysqladmin及相关参数 4、备份 db_name 数据库: mysqldump -uroot -p --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x db_name > bak.sql 5、恢复db_name数据库: mysql -uroot -p db_name六、一个简单的例子
//打印出本地主机的pim数据库里面的classmate数据表的第一、第二列。用户名kitty,密码a1。 //编译:gcc -o bin_name hello.c -I /usr/include/mysql -L /usr/lib/mysql -lmysqlclient -lz -lm #include #include #include #include int main( int argc , char* argv[] ) { MYSQL mysql; //连接mysql if(connect_mysql( } //载入数据 if( load_classmate( return 1; } //Do something here. //关闭mysql mysql_close( return 0; } //连接MYSQL数据库 int connect_mysql(MYSQL* mysql) { printf( "Initializing mysql................." ); if ( !mysql_init(mysql) ) { return 1; } printf( "Done\r\n" ); printf( "Connectiong to mysql..............." ); if (!mysql_real_connect(mysql,"localhost","kitty","a1 ","pim",0,NULL,0)) { fprintf(stderr, "Error: %s\r\n", mysql_error(mysql)); return 1; } //设置mysql连接的字符集 mysql_query( mysql, "SET NAMES "utf8"" ); printf( "Done\r\n" ); return 0; } //加载数据表 int load_classmate(MYSQL *mysql) { int ret,field_count,row_count,i; int *lengths; char *query="select * from classmate"; MYSQL_RES *result; MYSQL_ROW row; ret = mysql_real_query( mysql, query, strlen(query) ) ; if(ret != 0) { printf("加载不了classmate的数据。\n"); return 1; } result = mysql_store_result( mysql ) ; row_count = ( int )mysql_num_rows( result ) ; field_count = ( int )mysql_num_fields( result ) ; if( result == NULL return 1; } for( i = 0 ; i
4、连接级字符集 从以下几个方面来理解连接级字符集:(类似一种网络协议,服务器、客户端之间预先设置的通信规则) a、当查询离开客户端后,在查询中使用哪种字符集? 服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。 b、服务器接收到查询后应该转换为哪种字符集? 转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1或_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的 校对规则优先级。 c、服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集? character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。 我们能够调整这些变量的设置,有两个语句影响连接字符集: SET NAMES "charset_name" SET CHARACTER SET charset_name SET NAMES显示客户端发送的SQL语句中使用什么字符集。因此,SET NAMES "cp1251"语句告诉服务器“将来从这个客户端传来的信息采用字符集cp1251”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一个SELECT语句,它表示列值使用了什么字符集。) SET NAMES "x"语句与这三个语句等价: mysql> SET character_set_client = x; mysql> SET character_set_results = x; mysql> SET character_set_cOnnection= x; 要设置连接级的字符集,可以在编写MySQL数据库应用程序时,在客户端程序发起连接到服务器后,执行一条语句,如下情形: mysql_real_connect( mysql_query( 这样便可指定本次连接使用的默认字符集为utf8了。 八、一些MYSQL常用的命令 1.列出MYSQL支持的所有字符集: SHOW CHARACTER SET; 2.当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE "character_set_%"; 3.当前MYSQL服务器字符集校验设置 SHOW VARIABLES LIKE "collation_%"; 4.显示某数据库字符集设置 show create database 数据库名; 5.显示某数据表字符集设置 show create table 表名; 6.修改数据库字符集 alter database 数据库名 default character set "utf8"; 7.修改数据表字符集 alter table 表名 default character set "utf8"; 8.建库时指定字符集 create database 数据库名 character set gbk collate gbk_chinese_ci; 9.建表时指定字符集 CREATE TABLE `mysqlcode` ( `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `content` VARCHAR( 255 ) NOT NULL ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
本文共计2296个文字,预计阅读时间需要10分钟。
1. 开发环境准备: - 首先确保安装好Linux系统。 - 接着安装MySQL系列软件包,如MySQL 5.0版本的`mysql-server`和`mysql`。
2. 环境配置: - 确保Linux系统安装完善。 - 安装MySQL软件包。
一、开发环境的准备1、首先要安装好Linux2、安装MySQL系列软件包这边是MySQL5.0版本mysql-servermysql 一、开发环境的准备 1、首先要安装好Linux, 2、安装MySQL系列软件包,这边是MySQL5.0版本: mysql-server mysql-client libmysqlclient15-dev 二、检查MySQL服务的状态 1、查看当前的mysql服务状态 sudo /etc/init.d/mysql status 2、也可以用以下检查mysql服务是否有启动,如果结果为空,则没有启动: sudo netstat -tap | grep mysql 或 ps -ef | grep mysql 三、启动/停止/重启MySQL服务 1、启动:sudo /etc/init.d/mysql start 2、停止:sudo /etc/init.d/mysql stop 3、重启:sudo /etc/init.d/mysql restart 四、在命令行使用MySQL客户端访问数据库 1、访问本地主机: mysql -uuser -ppassword db_name 2、访问远程主机: mysql -hhost -uuser -ppassword db_name 备注:由于默认的配置是只能从本机访问,只要注释掉/etc/mysql/my.cnf里面的bind-address这行,就可以让远程主机访问了。 3、执行管理操作: 使用mysqladmin及相关参数 4、备份 db_name 数据库: mysqldump -uroot -p --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x db_name > bak.sql 5、恢复db_name数据库: mysql -uroot -p db_name六、一个简单的例子
//打印出本地主机的pim数据库里面的classmate数据表的第一、第二列。用户名kitty,密码a1。 //编译:gcc -o bin_name hello.c -I /usr/include/mysql -L /usr/lib/mysql -lmysqlclient -lz -lm #include #include #include #include int main( int argc , char* argv[] ) { MYSQL mysql; //连接mysql if(connect_mysql( } //载入数据 if( load_classmate( return 1; } //Do something here. //关闭mysql mysql_close( return 0; } //连接MYSQL数据库 int connect_mysql(MYSQL* mysql) { printf( "Initializing mysql................." ); if ( !mysql_init(mysql) ) { return 1; } printf( "Done\r\n" ); printf( "Connectiong to mysql..............." ); if (!mysql_real_connect(mysql,"localhost","kitty","a1 ","pim",0,NULL,0)) { fprintf(stderr, "Error: %s\r\n", mysql_error(mysql)); return 1; } //设置mysql连接的字符集 mysql_query( mysql, "SET NAMES "utf8"" ); printf( "Done\r\n" ); return 0; } //加载数据表 int load_classmate(MYSQL *mysql) { int ret,field_count,row_count,i; int *lengths; char *query="select * from classmate"; MYSQL_RES *result; MYSQL_ROW row; ret = mysql_real_query( mysql, query, strlen(query) ) ; if(ret != 0) { printf("加载不了classmate的数据。\n"); return 1; } result = mysql_store_result( mysql ) ; row_count = ( int )mysql_num_rows( result ) ; field_count = ( int )mysql_num_fields( result ) ; if( result == NULL return 1; } for( i = 0 ; i
4、连接级字符集 从以下几个方面来理解连接级字符集:(类似一种网络协议,服务器、客户端之间预先设置的通信规则) a、当查询离开客户端后,在查询中使用哪种字符集? 服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。 b、服务器接收到查询后应该转换为哪种字符集? 转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1或_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的 校对规则优先级。 c、服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集? character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。 我们能够调整这些变量的设置,有两个语句影响连接字符集: SET NAMES "charset_name" SET CHARACTER SET charset_name SET NAMES显示客户端发送的SQL语句中使用什么字符集。因此,SET NAMES "cp1251"语句告诉服务器“将来从这个客户端传来的信息采用字符集cp1251”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一个SELECT语句,它表示列值使用了什么字符集。) SET NAMES "x"语句与这三个语句等价: mysql> SET character_set_client = x; mysql> SET character_set_results = x; mysql> SET character_set_cOnnection= x; 要设置连接级的字符集,可以在编写MySQL数据库应用程序时,在客户端程序发起连接到服务器后,执行一条语句,如下情形: mysql_real_connect( mysql_query( 这样便可指定本次连接使用的默认字符集为utf8了。 八、一些MYSQL常用的命令 1.列出MYSQL支持的所有字符集: SHOW CHARACTER SET; 2.当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE "character_set_%"; 3.当前MYSQL服务器字符集校验设置 SHOW VARIABLES LIKE "collation_%"; 4.显示某数据库字符集设置 show create database 数据库名; 5.显示某数据表字符集设置 show create table 表名; 6.修改数据库字符集 alter database 数据库名 default character set "utf8"; 7.修改数据表字符集 alter table 表名 default character set "utf8"; 8.建库时指定字符集 create database 数据库名 character set gbk collate gbk_chinese_ci; 9.建表时指定字符集 CREATE TABLE `mysqlcode` ( `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `content` VARCHAR( 255 ) NOT NULL ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;

