数据库的相关操作

来源:互联网 发布:网络打印适配器 编辑:程序博客网 时间:2024/03/29 00:43
说起数据库可能有些同学虽然听过,但是真正操作的可能比较少吧。一般情况下,如果大家和我一样从学生过来的,写的是C++代码,一般都会用txt存储一些东西。但是,在这里我不得不说一句,其实用txt存储关键数据不是一个很好的习惯。首先txt是个人双击就能打开,压根没有可靠性。其次,在多线程操作的时候,用txt操作读写的时候可能会引发一些问题。比如说,突然你的txt就变成空白了。。。。。博主就遇到过数据库的相关操作。。。好吧,可能是博主当时做的代码并不好。
好了,言归正传,因为博主当时也是很怕麻烦的,所以直接用mysql的CAPI进行数据库操作。大家如果对数据库不熟悉,什么语句都不知道。。。。。。不用怕,因为博主也不是很熟悉。这些语句都是在mysql的数据手册上可以查询到的。而且语句其实也很简单,大家不需要记住,看看照葫芦画瓢就可以了。另外CAPI也是很简单,动态库链接之类的,大家用起来也是很方便的。
好了,上代码。
首先主要的代码需要包含一个mysql.h,大家不需要想怎么去写,因为我也不会写,都是copy的。

//////////////////////////////////mysql.h/////////////////////////////////////////////////


#ifndef _mysql_h
#define _mysql_h

#ifdef _AIX         
#include
#endif

#ifdef __CYGWIN__    
#undef WIN
#undef _WIN
#undef _WIN32
#undef _WIN64
#undef __WIN__
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _global_h
#ifndef MYSQL_ABI_CHECK
#include
#endif
#ifdef __LCC__
#include
#endif
typedef char my_bool;
#if (defined(_WIN32) || defined(_WIN64)) &&!defined(__WIN__)
#define __WIN__
#endif
#if !defined(__WIN__)
#define STDCALL
#else
#define STDCALL __stdcall
#endif

#ifndef my_socket_defined
#ifdef __WIN__
#define my_socket SOCKET
#else
typedef int my_socket;
#endif
#endif
#endif

#include "mysql_version.h"
#include "mysql_com.h"
#include "mysql_time.h"

#include "my_list.h"

extern unsigned int mysql_port;
extern char *mysql_unix_port;

#define CLIENT_NET_READ_TIMEOUT 365*24*3600
#define CLIENT_NET_WRITE_TIMEOUT 365*24*3600

#define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
#define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)
#define IS_BLOB(n) ((n) & BLOB_FLAG)
#define IS_NUM(t) (((t) <= MYSQL_TYPE_INT24 && (t)!= MYSQL_TYPE_TIMESTAMP) || (t) == MYSQL_TYPE_YEAR || (t) ==MYSQL_TYPE_NEWDECIMAL)
#define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB&& (t) <= MYSQL_TYPE_STRING)


typedef struct st_mysql_field {
  char *name;             
  char *org_name;          
  char *table;             
  char *org_table;          
  char *db;               
  char *catalog;     
  char *def;               
  unsigned long length;     
  unsigned long max_length; 
  unsigned int name_length;
  unsigned int org_name_length;
  unsigned int table_length;
  unsigned int org_table_length;
  unsigned int db_length;
  unsigned int catalog_length;
  unsigned int def_length;
  unsigned int flags;       
  unsigned int decimals;     
  unsigned int charsetnr;   
  enum enum_field_types type;
  void *extension;
} MYSQL_FIELD;

typedef char **MYSQL_ROW;
typedef unsigned int MYSQL_FIELD_OFFSET;

#ifndef _global_h
#if defined(NO_CLIENT_LONG_LONG)
typedef unsigned long my_ulonglong;
#elif defined (__WIN__)
typedef unsigned __int64 my_ulonglong;
#else
typedef unsigned long long my_ulonglong;
#endif
#endif

#include "typelib.h"

#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0)

#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED

typedef struct st_mysql_rows {
  struct st_mysql_rows *next;
  MYSQL_ROW data;
  unsigned long length;
} MYSQL_ROWS;

typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;

#include "my_alloc.h"

typedef struct embedded_query_resultEMBEDDED_QUERY_RESULT;
typedef struct st_mysql_data {
  MYSQL_ROWS *data;
  struct embedded_query_result*embedded_info;
  MEM_ROOT alloc;
  my_ulonglong rows;
  unsigned int fields;
 
  void *extension;
} MYSQL_DATA;

enum mysql_option 
{
  MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
  MYSQL_INIT_COMMAND,MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
  MYSQL_SET_CHARSET_DIR,MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
  MYSQL_OPT_PROTOCOL,MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
  MYSQL_OPT_WRITE_TIMEOUT,MYSQL_OPT_USE_RESULT,
  MYSQL_OPT_USE_REMOTE_CONNECTION,MYSQL_OPT_USE_EMBEDDED_CONNECTION,
  MYSQL_OPT_GUESS_CONNECTION,MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH,
  MYSQL_REPORT_DATA_TRUNCATION,MYSQL_OPT_RECONNECT,
  MYSQL_OPT_SSL_VERIFY_SERVER_CERT,MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH
};

struct st_mysql_options_extention; 

struct st_mysql_options {
  unsigned int connect_timeout, read_timeout,write_timeout;
  unsigned int port, protocol;
  unsigned long client_flag;
  char*host,*user,*password,*unix_socket,*db;
  struct st_dynamic_array*init_commands;
  char *my_cnf_file,*my_cnf_group,*charset_dir, *charset_name;
  char *ssl_key;
  char *ssl_cert;
  char *ssl_ca;
  char *ssl_capath;
  char *ssl_cipher;
  char *shared_memory_base_name;
  unsigned long max_allowed_packet;
  my_bool use_ssl;
  my_bool compress,named_pipe;
  my_bool unused1;
  my_bool unused2;
  my_bool unused3;
  my_bool unused4;
  enum mysql_option methods_to_use;
  char *client_ip;
 
  my_bool secure_auth;
 
  my_bool report_data_truncation;

 
  int (*local_infile_init)(void **, constchar *, void *);
  int (*local_infile_read)(void *, char *,unsigned int);
  void (*local_infile_end)(void *);
  int (*local_infile_error)(void *, char *,unsigned int);
  void *local_infile_userdata;
  struct st_mysql_options_extention*extension;
};

enum mysql_status 
{
  MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT,
  MYSQL_STATUS_STATEMENT_GET_RESULT
};

enum mysql_protocol_type 
{
  MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP,MYSQL_PROTOCOL_SOCKET,
  MYSQL_PROTOCOL_PIPE,MYSQL_PROTOCOL_MEMORY
};

typedef struct character_set
{
  unsigned int     number;   
  unsigned int     state;     
  const char       *csname;   
  const char       *name;     
  const char       *comment; 
  const char       *dir;     
  unsigned int     mbminlen; 
  unsigned int     mbmaxlen; 
} MY_CHARSET_INFO;

struct st_mysql_methods;
struct st_mysql_stmt;

typedef struct st_mysql
{
  NET net;
  unsigned char *connector_fd;
  char*host,*user,*passwd,*unix_socket,*server_version,*host_info;
  char         *info,*db;
  struct charset_info_st *charset;
  MYSQL_FIELD *fields;
  MEM_ROOT field_alloc;
  my_ulonglong affected_rows;
  my_ulonglong insert_id;
  my_ulonglong extra_info;
  unsigned long thread_id;
  unsigned long packet_length;
  unsigned int port;
  unsigned longclient_flag,server_capabilities;
  unsigned int protocol_version;
  unsigned int field_count;
  unsigned int server_status;
  unsigned int server_language;
  unsigned int warning_count;
  struct st_mysql_options options;
  enum mysql_status status;
  my_bool free_me;
  my_bool reconnect;

 
  char      scramble[SCRAMBLE_LENGTH+1];
  my_bool unused1;
  void *unused2, *unused3, *unused4,*unused5;

  LIST  *stmts;                
  const struct st_mysql_methods*methods;
  void *thd;
 
  my_bool *unbuffered_fetch_owner;
 
  char *info_buffer;
  void *extension;
} MYSQL;


typedef struct st_mysql_res {
  my_ulonglong row_count;
  MYSQL_FIELD *fields;
  MYSQL_DATA *data;
  MYSQL_ROWS *data_cursor;
  unsigned long *lengths;
  MYSQL *handle;
  const struct st_mysql_methods*methods;
  MYSQL_ROW row;
  MYSQL_ROW current_row;
  MEM_ROOT field_alloc;
  unsigned int field_count,current_field;
  my_bool eof;
 
  my_bool      unbuffered_fetch_cancelled; 
  void *extension;
} MYSQL_RES;


#if !defined(MYSQL_SERVER) &&!defined(MYSQL_CLIENT)
#define MYSQL_CLIENT
#endif


typedef struct st_mysql_parameters
{
  unsigned long *p_max_allowed_packet;
  unsigned long *p_net_buffer_length;
  void *extension;
} MYSQL_PARAMETERS;

#if !defined(MYSQL_SERVER) &&!defined(EMBEDDED_LIBRARY)
#define max_allowed_packet(*mysql_get_parameters()->p_max_allowed_packet)
#define net_buffer_length(*mysql_get_parameters()->p_net_buffer_length)
#endif

int STDCALL mysql_server_init(int argc, char **argv, char**groups);
void STDCALL mysql_server_end(void);

#define mysql_library_init mysql_server_init
#define mysql_library_end mysql_server_end

MYSQL_PARAMETERS *STDCALL mysql_get_parameters(void);

my_bool STDCALL mysql_thread_init(void);
void STDCALL mysql_thread_end(void);


my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);
my_bool STDCALL mysql_eof(MYSQL_RES *res);
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES*res,
    unsigned int fieldnr);
MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES*res);
MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES*res);

unsigned int STDCALL mysql_field_count(MYSQL *mysql);
my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql);
my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql);
unsigned int STDCALL mysql_errno(MYSQL *mysql);
const char * STDCALL mysql_error(MYSQL *mysql);
const char *STDCALL mysql_sqlstate(MYSQL *mysql);
unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
const char * STDCALL mysql_info(MYSQL *mysql);
unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
const char * STDCALL mysql_character_set_name(MYSQL*mysql);
int         STDCALLmysql_set_character_set(MYSQL *mysql, const char *csname);

MYSQL * STDCALL mysql_init(MYSQL *mysql);
my_bool STDCALL mysql_ssl_set(MYSQL *mysql, const char*key,
     constchar *cert, const char *ca,
     constchar *capath, const char *cipher);
const char *    STDCALLmysql_get_ssl_cipher(MYSQL *mysql);
my_bool STDCALL mysql_change_user(MYSQL *mysql, const char*user, 
 const char *passwd, const char *db);
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char*host,
  const char *user,
  const char *passwd,
  const char *db,
  unsigned int port,
  const char *unix_socket,
  unsigned long clientflag);
int STDCALL mysql_select_db(MYSQL *mysql, const char*db);
int STDCALL mysql_query(MYSQL *mysql, const char *q);
int STDCALL mysql_send_query(MYSQL *mysql, const char*q,
unsigned long length);
int STDCALL mysql_real_query(MYSQL *mysql, const char*q,
unsigned long length);
MYSQL_RES *     STDCALLmysql_store_result(MYSQL *mysql);
MYSQL_RES *     STDCALLmysql_use_result(MYSQL *mysql);

void       STDCALL mysql_get_character_set_info(MYSQL*mysql,
                       MY_CHARSET_INFO*charset);


#define LOCAL_INFILE_ERROR_LEN 512

void
mysql_set_local_infile_handler(MYSQL *mysql,
                          int (*local_infile_init)(void **, const char*,
                        void *),
                          int (*local_infile_read)(void *, char *,
unsigned int),
                          void (*local_infile_end)(void *),
                          int (*local_infile_error)(void *, char*,
unsigned int),
                          void *);

void
mysql_set_local_infile_default(MYSQL *mysql);

int STDCALL mysql_shutdown(MYSQL *mysql,
                                 enummysql_enum_shutdown_level
                                 shutdown_level);
int STDCALL mysql_dump_debug_info(MYSQL *mysql);
int STDCALL mysql_refresh(MYSQL *mysql,
    unsigned intrefresh_options);
int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid);
int STDCALL mysql_set_server_option(MYSQL *mysql,
enum enum_mysql_set_option
option);
int STDCALL mysql_ping(MYSQL *mysql);
const char * STDCALL mysql_stat(MYSQL *mysql);
const char * STDCALL mysql_get_server_info(MYSQL*mysql);
const char * STDCALL mysql_get_client_info(void);
unsigned long STDCALL mysql_get_client_version(void);
const char * STDCALL mysql_get_host_info(MYSQL *mysql);
unsigned long STDCALL mysql_get_server_version(MYSQL*mysql);
unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql);
MYSQL_RES * STDCALL mysql_list_dbs(MYSQL *mysql,const char*wild);
MYSQL_RES * STDCALL mysql_list_tables(MYSQL *mysql,const char*wild);
MYSQL_RES * STDCALL mysql_list_processes(MYSQL *mysql);
int STDCALL mysql_options(MYSQL *mysql,enum mysql_optionoption,
     constvoid *arg);
void STDCALL mysql_free_result(MYSQL_RES *result);
void STDCALL mysql_data_seek(MYSQL_RES *result,
my_ulonglong offset);
MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES*result,
MYSQL_ROW_OFFSET offset);
MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES*result,
  MYSQL_FIELD_OFFSET offset);
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES*result);
MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES*result);
MYSQL_RES *     STDCALLmysql_list_fields(MYSQL *mysql, const char *table,
 const char *wild);
unsigned long STDCALL mysql_escape_string(char *to,const char*from,
   unsigned longfrom_length);
unsigned long STDCALL mysql_hex_string(char *to,const char*from,
                                   unsignedlong from_length);
unsigned long STDCALL mysql_real_escape_string(MYSQL*mysql,
      char*to,const char *from,
     unsigned long length);
void STDCALL mysql_debug(const char *debug);
void STDCALL myodbc_remove_escape(MYSQL *mysql,char*name);
unsigned int STDCALL mysql_thread_safe(void);
my_bool STDCALL mysql_embedded(void);
my_bool        STDCALLmysql_read_query_result(MYSQL *mysql);



enum enum_mysql_stmt_state
{
  MYSQL_STMT_INIT_DONE= 1,MYSQL_STMT_PREPARE_DONE, MYSQL_STMT_EXECUTE_DONE,
  MYSQL_STMT_FETCH_DONE
};



typedef struct st_mysql_bind
{
  unsigned long *length;        
  my_bool      *is_null; 
  void *buffer;  
 
  my_bool      *error;
  unsigned char *row_ptr;       
  void (*store_param_func)(NET *net, structst_mysql_bind *param);
  void (*fetch_result)(struct st_mysql_bind*, MYSQL_FIELD *,
                    unsignedchar **row);
  void (*skip_result)(struct st_mysql_bind *,MYSQL_FIELD *,
    unsigned char **row);
 
  unsigned long buffer_length;
  unsigned long offset;        
  unsigned long length_value;   
  unsigned int param_number; 
  unsigned int  pack_length; 
  enum enum_field_types buffer_type;
  my_bool      error_value;     
  my_bool      is_unsigned;     
  my_bool long_data_used; 
  my_bool is_null_value;   
  void *extension;
} MYSQL_BIND;


struct st_mysql_stmt_extension;

typedef struct st_mysql_stmt
{
  MEM_ROOT      mem_root;          
  LIST          list;             
  MYSQL         *mysql;           
  MYSQL_BIND    *params;            
  MYSQL_BIND    *bind;              
  MYSQL_FIELD   *fields;            
  MYSQL_DATA    result;            
  MYSQL_ROWS    *data_cursor;       
 
  int          (*read_row_func)(struct st_mysql_stmt*stmt, 
                             unsigned char **row);
 
  my_ulonglong  affected_rows;
  my_ulonglong   insert_id;          
  unsigned long stmt_id;     
  unsigned long  flags;             
  unsigned long prefetch_rows;       
 
  unsigned int  server_status;
  unsigned int last_errno;     
  unsigned int  param_count;         
  unsigned int  field_count;         
  enum enum_mysql_stmt_state state;   
  char last_error[MYSQL_ERRMSG_SIZE];
  char sqlstate[SQLSTATE_LENGTH+1];
 
  my_bool      send_types_to_server;
  my_bool      bind_param_done;     
  unsigned char bind_result_done;   
 
  my_bool      unbuffered_fetch_cancelled; 
 
  my_bool      update_max_length;    
  struct st_mysql_stmt_extension*extension;
} MYSQL_STMT;

enum enum_stmt_attr_type
{
 
  STMT_ATTR_UPDATE_MAX_LENGTH,
 
  STMT_ATTR_CURSOR_TYPE,
 
  STMT_ATTR_PREFETCH_ROWS
};


MYSQL_STMT * STDCALL mysql_stmt_init(MYSQL *mysql);
int STDCALL mysql_stmt_prepare(MYSQL_STMT *stmt, const char*query,
                          unsigned long length);
int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt);
int STDCALL mysql_stmt_fetch(MYSQL_STMT *stmt);
int STDCALL mysql_stmt_fetch_column(MYSQL_STMT *stmt,MYSQL_BIND *bind_arg, 
                               unsignedint column,
                               unsignedlong offset);
int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt);
unsigned long STDCALL mysql_stmt_param_count(MYSQL_STMT *stmt);
my_bool STDCALL mysql_stmt_attr_set(MYSQL_STMT *stmt,
                               enumenum_stmt_attr_type attr_type,
                               const void*attr);
my_bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
                               enumenum_stmt_attr_type attr_type,
                               void*attr);
my_bool STDCALL mysql_stmt_bind_param(MYSQL_STMT * stmt,MYSQL_BIND * bnd);
my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT * stmt,MYSQL_BIND * bnd);
my_bool STDCALL mysql_stmt_close(MYSQL_STMT * stmt);
my_bool STDCALL mysql_stmt_reset(MYSQL_STMT * stmt);
my_bool STDCALL mysql_stmt_free_result(MYSQL_STMT*stmt);
my_bool STDCALL mysql_stmt_send_long_data(MYSQL_STMT*stmt, 
                                    unsignedint param_number,
                                    const char*data, 
                                    unsignedlong length);
MYSQL_RES *STDCALL mysql_stmt_result_metadata(MYSQL_STMT*stmt);
MYSQL_RES *STDCALL mysql_stmt_param_metadata(MYSQL_STMT*stmt);
unsigned int STDCALL mysql_stmt_errno(MYSQL_STMT *stmt);
const char *STDCALL mysql_stmt_error(MYSQL_STMT * stmt);
const char *STDCALL mysql_stmt_sqlstate(MYSQL_STMT *stmt);
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_seek(MYSQL_STMT*stmt, 
                                      MYSQL_ROW_OFFSEToffset);
MYSQL_ROW_OFFSET STDCALL mysql_stmt_row_tell(MYSQL_STMT*stmt);
void STDCALL mysql_stmt_data_seek(MYSQL_STMT *stmt,my_ulonglong offset);
my_ulonglong STDCALL mysql_stmt_num_rows(MYSQL_STMT*stmt);
my_ulonglong STDCALL mysql_stmt_affected_rows(MYSQL_STMT*stmt);
my_ulonglong STDCALL mysql_stmt_insert_id(MYSQL_STMT*stmt);
unsigned int STDCALL mysql_stmt_field_count(MYSQL_STMT*stmt);

my_bool STDCALL mysql_commit(MYSQL * mysql);
my_bool STDCALL mysql_rollback(MYSQL * mysql);
my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_boolauto_mode);
my_bool STDCALL mysql_more_results(MYSQL *mysql);
int STDCALL mysql_next_result(MYSQL *mysql);
int STDCALL mysql_stmt_next_result(MYSQL_STMT *stmt);
void STDCALL mysql_close(MYSQL *sock);


#define MYSQL_NO_DATA       100
#define MYSQL_DATA_TRUNCATED 101

#define mysql_reload(mysql)mysql_refresh((mysql),REFRESH_GRANT)

#ifdef USE_OLD_FUNCTIONS
MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char*host,
     constchar *user, const char *passwd);
int STDCALL mysql_create_db(MYSQL *mysql, const char*DB);
int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
#endif
#define HAVE_MYSQL_REAL_CONNECT

#ifdef __cplusplus
}
#endif

#endif



//
// ConnectSQL.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
MYSQL_RES *res;//这里定义的是一个结果集,主要是很多查询的结果都是已结果集返回的
MYSQL_FIELD * fd ;
    MYSQL_ROW row;
int i;
MYSQL myCon;
void ConnectDatabase()
{
   mysql_library_init(0,NULL,NULL);//初始化MySQL C API库 
  if(mysql_init(&myCon)==NULL)//初始化mydata的数据结构,myCon是MYSQL对象 
 cout<<mysql_error(&myCon)<<endl;
 //  if(mysql_set_character_set(&myCon,"utf8"))//连接选项:添加GBK字符集支持 
//   cout<<mysql_error(&myCon)<<endl;
      
    //连接函数 
//首先我想要说明的是,如果没有特殊声明一般情况下对于数据库的操作,返回值为0表示成功,非0表示失败
   if(mysql_real_connect(&myCon,"localhost","root","136133","mydb",50000, 0, 0) == NULL)
{
       cout<<"database connectionfailed!"<<endl; 
return;
}
else
{
mysql_query(&myCon, "SET NAMES GBK");//设置编码格式,否则在cmd下无法显示中文
cout<<"database connectionsucceed!"<<endl; 
}
}
void CreateTable()
{

if (mysql_query( &myCon, "create table mytable ( timedatetime, s1 char(6), s2 char(11),s3 int, s4 int)"))
//执行SQL语句
{//执行SQL语句出错
   cout<<"Can't createtable:"<<mysql_error(&myCon) << endl;
//mysql_close( &myCon ) ;
return ;
}

}
void InsertDataIntoTable()
{
 //注意时间的格式
 if (mysql_query( &myCon, "insert intomytable value('2015-9-10 00:32','xiao','li',1,1)"))
       {//执行SQL语句出错
cout<<"Can't insert data totable"<<mysql_error(&myCon) << endl;
// mysql_close( &myCon) ;
return  ;
}
}
void ShowAllData()
{
if (mysql_query( &myCon, "select * from mytable"))
//进行数据检索
{
//执行SQL语句出错
cout<<"Can't select data fromtable"<<mysql_error(&myCon) << endl;
//mysql_close( &myCon ) ;
return ;
}
else
{
res = mysql_store_result( &myCon) ;
//取得查询结果
i = (int) mysql_num_rows( res ) ;
//取得有效记录数
// cout<<"Query:"<<szSqlText<<"\n"<<i<<" recordsfound:"<<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 ) ;
}
}
void FindData()
{
if (mysql_query( &myCon, "select * from mytable wheres2='zuo'"))
//进行数据检索
{
//执行SQL语句出错
cout<<"Can't select data fromtable"<<mysql_error(&myCon) << endl;
//mysql_close( &myCon ) ;
return ;
}
else
{
res = mysql_store_result( &myCon) ;
//取得查询结果

//输出各字段名
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 ) ;
}
}
void UpdateData()
{
if (mysql_query( &myCon, "update mytable sets1='xiao2',s3=2 where s1='xiao'"))
//进行数据检索
{
//执行SQL语句出错
cout<<"Can't updatetable"<<mysql_error(&myCon) << endl;
//mysql_close( &myCon ) ;
return ;
}
if (mysql_query( &myCon, "update mytable set s4=5 wheres2='wang'"))
//进行数据检索
{
//执行SQL语句出错
cout<<"Can't updatetable"<<mysql_error(&myCon) << endl;
//mysql_close( &myCon ) ;
return ;
}
else
{
int tempi= mysql_affected_rows( &myCon) ;//0表示未更新记录
//取得查询结果
           cout<<"update "<<tempi<<"row"<<endl;
}
}

void DeleteData()
{
if (mysql_query( &myCon, "delete from mytable where s2='wang'"))
//进行数据检索
{
//执行SQL语句出错
cout<<"Can't detelemytable"<<mysql_error(&myCon) << endl;
//mysql_close( &myCon ) ;
return ;
}
else
{
int tempi= mysql_affected_rows( &myCon) ;//0表示未更新记录
//取得查询结果
           cout<<"delete "<<tempi<<"row"<<endl;
}
}
void TopData(int topRow)
{
if (mysql_query( &myCon, "select top 2 *frommytable"))
//进行数据检索
{
//执行SQL语句出错
cout<<"Can't select top from mytable"<<mysql_error(&myCon) <<endl;
//mysql_close( &myCon ) ;
return ;
}
else
{
res= mysql_store_result( &myCon) ;//0表示未更新记录
//取得查询结果
while(row=mysql_fetch_row(res))
         cout<<row[1]<<'\t'<<row[2]<<'\t'<<row[3]<<'\t'<<row[4]<<'\t'<<endl;
}
}
void LikeData()
{
if(mysql_query(&myCon,"select * from mytable where s2 like'%i'"))
{
cout<<"can not use like % symbol:"<<endl;
cout<<mysql_error(&myCon)<<endl;
}
else
{
res=mysql_store_result(&myCon);
while(row=mysql_fetch_row(res))
cout<<row[1]<<'\t'<<row[2]<<'\t'<<row[3]<<'\t'<<row[4]<<endl;
}
}
void main(){
 
  
    ConnectDatabase();  
    
// CreateTable();
// InsertDataIntoTable();


cout<<"show all the data:"<<endl;
ShowAllData();
cout<<"show a data where thes2='zuo'"<<endl;
FindData();

cout<<"update a data"<<endl;
UpdateData();

DeleteData();

//get the top row of the table
// int topRow=2;         can notselect top in C API
// TopData(topRow);

LikeData();
  //初始化数据结构
  //connection character set
//wait for posibility to check system/mysql mysqlets
mysql_close(&myCon);
mysql_library_end();
}


原创粉丝点击