整合了两个在网上搜到的有效代码,把里面优秀的东西合了一下,上午win32控制台下调试成功了,拿出与大家一起分享。#include <windows.h>
#include <iostream>
#include <mysql.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main( int argc, char * argv[] )
{
//connection params
char *host = "localhost";
char *user = "root";
char *pass = "123";
char *db = "test";
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_FIELD * fd ;
    MYSQL_ROW row;
char szSqlText[500]=""; int i;
int tcreate=0;
   
    if ( (mysql = mysql_init((MYSQL*) 0))
//初始化数据结构
&& mysql_real_connect( mysql, host, user, pass, db, 0, NULL, 0 ) )
   {
mysql_set_character_set(mysql,"utf8");
//connection character set
//wait for posibility to check system/mysql mysqlets
if(tcreate)
{
sprintf(szSqlText, //构造SQL语句
"create table mytable"
//新建一张表
"(time datetime, s1 char(6), "
"s2 char(11), s3 int, s4 int)");
if (mysql_query( mysql, szSqlText))
//执行SQL语句
{//执行SQL语句出错
cout<<"Can't create table:"<<mysql_error(mysql) << endl;

mysql_close( mysql ) ;
return FALSE ;
}
}
sprintf(szSqlText,
"insert into mytable"
     //向表中插入数据
"values('2000-3-10 21:01:30',"
  //注意时间的格式
"'Test','MySQLTest',2000,15)");
if (mysql_query( mysql, szSqlText))
   {//执行SQL语句出错
cout<<"Can't insert data to table"<<mysql_error(mysql) << endl;
mysql_close( mysql) ;
return FALSE ;
}
sprintf(szSqlText, "select * from mytable");
if (mysql_query( mysql, szSqlText))
//进行数据检索
{
//执行SQL语句出错
mysql_close( mysql ) ;
return FALSE ;
}
else
{
res = mysql_store_result( mysql) ;
//取得查询结果
i = (int) mysql_num_rows( res ) ;
//取得有效记录数
cout<<"Query: "<<szSqlText<<"\n"<<i<<" records found:"<<endl;
for ( i = 0 ; fd = mysql_fetch_field( res ) ; i++ )
cout<<fd->name<<"\t";
cout<<endl;
//输出各字段名
while(row = mysql_fetch_row( res ))
//依次读取各条记录
cout<<row[0]<<"\t"<<row[1]<<"\t"<<row[2]<<"\t"<<row[3]<<"\t"<<row[4]<<endl;

mysql_free_result( res ) ;
}
   }
   else
   {//连接数据库出错
   cout<<"Can't connect to the mysql server "<<mysql_error(mysql) << endl;
   mysql_close( mysql ) ;
   return FALSE ;
   }
   mysql_close( mysql ) ;
   return TRUE ;
} 附:我的mysql安装路径为d:\software\mysql5.0所以要在VC中设置include路径和lib的路径。添加MySql的include目录到VC工作台中Project->Settings->C/C++->Category->Preprocessor->Additional include directories中添加:D:\software\mysql5.0\include。添加lib的路径:Tools->Options->Directories中选择Library files,然后添加lib的目录:D:\SOFTWARE\MYSQL5.0\LIB然后在Project->Settings->Link中,添加libmysql.lib到Object/libray modules中。还要确保Project Options中为/subsystem:console而不是/subsystem:window,否则编译错误。

解决方案 »

  1.   

    楼主,如果我想存一些数据,怎么办?
    比如:我有个表格,里面有如下字段
       s2 char(100)
    我想在s2中存放100字节的数据,这些数可能为0,我在构造insert语句时会出错,因为数据中可能有0.
    请问楼主,该怎么解决?sprintf(szSqlText,
    "insert into mytable"
         //向表中插入数据
    "values('2000-3-10 21:01:30',"
      //注意时间的格式
    "'Test','MySQLTest',2000,15)");