Mysql 插入中文及中文查询 (修改+调试)

  • A+
所属分类:数据库

此程序从pudn上下载,但源程序编译都通不过,同时又有致命错误,
//我修改之,能正常运行,测试环境为mysql5.0,xp
//关键是设置对字符集,设置gbk,gb2312测试通过,utf8测试未通过
//在运行程序前先建立数据库jj,注意下面几个参数(修改为你自己的)

  1. // char *host = "localhost"; 
  2. // char *user = "root"; 
  3. // char *pass = "674800"; 
  4. // char *db = "jj"; 
  5. #include <windows.h>
  6. #include <iostream>
  7. #include <mysql.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. using namespace std;
  11. #pragma comment(lib,"libmysql.lib")
  12. int connDB();
  13. int create_table();
  14. int insert_table();
  15. int select_table();
  16. int disconnDB();
  17. MYSQL *mysql;
  18. MYSQL_RES *res;
  19. MYSQL_FIELD * fd;
  20. MYSQL_ROW row;
  21. char szSqlText[500]="";
  22. int i;
  23. int main()
  24. {
  25. connDB();
  26. // create_table(); 
  27. insert_table();
  28. select_table();
  29. disconnDB();
  30. return 0;
  31. }
  32. ///////////////子函数 
  33. int connDB()//连接数据库 
  34. {
  35. char *host = "localhost";
  36. char *user = "root";
  37. char *pass = "674800";
  38. char *db = "jj";
  39. mysql = mysql_init((MYSQL*) 0);
  40. mysql_real_connect( mysql, host, user, pass, db,3306, NULL, 0 ) ; //链接到服务器 
  41. mysql_set_character_set(mysql,"gb2312"); //设置字符集 
  42. cout<<"conn OK!"<<endl;
  43. return 0;
  44. }
  45. //关闭数据库 
  46. int disconnDB()
  47. {
  48. mysql_close( mysql ) ;
  49. cout<<"disconn OK!"<<endl;
  50. return 0 ;
  51. }
  52. //创建表 
  53. int create_table()
  54. {
  55. mysql_set_character_set(mysql,"gb2312");
  56. sprintf(szSqlText, \
  57. "create table mytable \ 
  58. (s0 varchar(100), \ 
  59. s1 char(6),\ 
  60. s2 varchar(4),\ 
  61. s3 varchar(3),s4 int)\ 
  62. ENGINE=InnoDB \ 
  63. DEFAULT CHARSET=gb2312");
  64. if(mysql_query( mysql, szSqlText))
  65. cout<<"occurred an error:"<<mysql_error(mysql)<<endl;
  66. return 0;
  67. }
  68. int insert_table()
  69. {
  70. mysql_set_character_set(mysql,"gb2312");
  71. sprintf(szSqlText,
  72. "insert into mytable\ 
  73. values('2000-3-10 21:01:30',\ 
  74. 'Test',\ 
  75. '清风寒剑',\ 
  76. '岁月情',\ 
  77. 2500)");
  78. if( mysql_query( mysql, szSqlText) )
  79. cout<<"occurred an error:"<<mysql_error(mysql)<<endl;
  80. return 0;
  81. }
  82. int select_table()
  83. {
  84. mysql_set_character_set(mysql,"gb2312");
  85. sprintf(szSqlText, "select * from mytable ");
  86. if (mysql_query( mysql, szSqlText))
  87. {
  88. cout<<"occurred an error:"<<mysql_error(mysql)<<endl;
  89. mysql_close( mysql ) ;
  90. return FALSE ;
  91. }
  92. res = mysql_store_result( mysql) ;
  93. i = (int) mysql_num_rows( res ) ;
  94. cout<<"Query: "<<szSqlText<<"\n"<<i<<" records found:"<<endl;
  95. for ( i = 0 ; fd = mysql_fetch_field( res ) ; i++ )
  96. cout<<fd->name<<"\t";
  97. cout<<endl;
  98. while(row = mysql_fetch_row( res ))
  99. cout<<row[0]<<"\t"<<row[1]<<"\t"<<row[2]<<"\t"<<row[3]<<"\t"<<row[4]<<endl;
  100. mysql_free_result( res ) ;
  101. cout<<"select OK!"<<endl;
  102. return 0;
  103. }

我机器上的运行结果:

Mysql 插入中文及中文查询 (修改+调试)

Mysql 插入中文及中文查询 (修改+调试)

图片引用自网络