#include "stdafx.h"
#include <WINDOWS.H>
#include <WINSOCK2.H>
#include <mysql.h>  
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"D:\\mysql-5.5.9-win32\\lib\\libmysql.lib")
#define INSERT_SAMPLE "INSERT INTO table1(No) VALUES(?)"
#define SELECT_SAMPLE "select * from table1 where No=?"//数据库 MyDataBase 表Table1 只有一列两行 列名No 数据分别为102,120
int main(int argc, char* argv[])
{
MYSQL mysql;
printf("%d\n",mysql_library_init(0,0,0));
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"gbk");
int nResult = (int)mysql_real_connect(&mysql, "localhost", "root", "890227", "MyDataBase", 3306, 0, 0);
printf("mysql_real_connect:%d\n",nResult); //打印出的是非0 成功
MYSQL_STMT *pstmt;
MYSQL_BIND mybind;
int Temp = 102;
unsigned long llen  = 4;
mybind.buffer = &Temp;
mybind.buffer_type = MYSQL_TYPE_LONG;
mybind.buffer_length  = 4;
mybind.length  = &llen;
mybind.is_null = 0;
pstmt = mysql_stmt_init(&mysql);
int nRes = mysql_stmt_prepare(pstmt, SELECT_SAMPLE, strlen(SELECT_SAMPLE));
if(nRes)
{
printf("参数化语句准备失败\n");
return 1;
}
nRes = mysql_stmt_bind_param(pstmt,&mybind);
if(nRes)
{
printf("参数化BIND失败\n");
return 1;
}
unsigned long ltype = CURSOR_TYPE_READ_ONLY; 
//mysql_stmt_attr_set(pstmt,STMT_ATTR_CURSOR_TYPE,&ltype);
nRes = mysql_stmt_execute(pstmt);
if(nRes)
{
printf("执行语句失败\n");
return 1;
}
printf("查询到%d行\n",mysql_stmt_num_rows(pstmt)); MYSQL_RES *Res = mysql_stmt_result_metadata(pstmt);
if (!Res)
{
printf("失败的读取!\n");
return 1;
} while(!mysql_stmt_fetch(pstmt))
printf("%s\n",Res[0]); //打印出的是(null)
return 0;
}