谁有mysql.h 我在windows 下安装了mysql 没找到mysql.h

谁有mysql.h 我在windows 下安装了mysql 没找到mysql.h,第1张

/* Copyright (C) 2000-2003 MySQL AB

This program is free softwareyou can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundationeither version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTYwithout even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this programif not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */

#ifndef _mysql_h

#define _mysql_h

#ifdef __CYGWIN__ /* CYGWIN implements a UNIX API */

#undef WIN

#undef _WIN

#undef _WIN32

#undef _WIN64

#undef __WIN__

#endif

#ifdef __cplusplus

extern "C" {

#endif

#ifndef _global_h /* If not standard header */

#include <sys/types.h>

#ifdef __LCC__

#include <winsock.h> /* For windows */

#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

typedef char * gptr

#ifndef my_socket_defined

#ifdef __WIN__

#define my_socket SOCKET

#else

typedef int my_socket

#endif /* __WIN__ */

#endif /* my_socket_defined */

#endif /* _global_h */

#include "mysql_com.h"

#include "mysql_time.h"

#include "mysql_version.h"

#include "typelib.h"

#include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */

extern unsigned int mysql_port

extern char *mysql_unix_port

#define CLIENT_NET_READ_TIMEOUT 365*24*3600 /* Timeout on read */

#define CLIENT_NET_WRITE_TIMEOUT 365*24*3600 /* Timeout on write */

#ifdef __NETWARE__

#pragma pack(push, 8) /* 8 byte alignment */

#endif

#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) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR || (t) == FIELD_TYPE_NEWDECIMAL)

#define IS_NUM_FIELD(f) ((f)->flags &NUM_FLAG)

#define INTERNAL_NUM_FIELD(f) (((f)->type <= FIELD_TYPE_INT24 &&((f)->type != FIELD_TYPE_TIMESTAMP || (f)->length == 14 || (f)->length == 8)) || (f)->type == FIELD_TYPE_YEAR)

typedef struct st_mysql_field {

char *name/* Name of column */

char *org_name/* Original column name, if an alias */

char *table /* Table of column if column was a field */

char *org_table /* Org table name, if table was an alias */

char *db /* Database for table */

char *catalog /* Catalog for table */

char *def /* Default value (set by mysql_list_fields) */

unsigned long length /* Width of column (create length) */

unsigned long max_length /* Max width for selected set */

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/* Div flags */

unsigned int decimals /* Number of decimals in field */

unsigned int charsetnr/* Character set */

enum enum_field_types type/* Type of field. See mysql_com.h for types */

} MYSQL_FIELD

typedef char **MYSQL_ROW /* return data as array of strings */

typedef unsigned int MYSQL_FIELD_OFFSET/* offset to current field */

#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

#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0)

/* backward compatibility define - to be removed eventually */

#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED

typedef struct st_mysql_rows {

struct st_mysql_rows *next /* list of rows */

MYSQL_ROW data

unsigned long length

} MYSQL_ROWS

typedef MYSQL_ROWS *MYSQL_ROW_OFFSET /* offset to current row */

#include "my_alloc.h"

typedef struct embedded_query_result EMBEDDED_QUERY_RESULT

typedef struct st_mysql_data {

my_ulonglong rows

unsigned int fields

MYSQL_ROWS *data

MEM_ROOT alloc

/* extra info for embedded library */

struct embedded_query_result *embedded_info

} 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

}

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 /* PEM key file */

char *ssl_cert /* PEM cert file */

char *ssl_ca /* PEM CA file */

char *ssl_capath /* PEM directory of CA-s? */

char *ssl_cipher /* cipher to use */

char *shared_memory_base_name

unsigned long max_allowed_packet

my_bool use_ssl /* if to use SSL or not */

my_bool compress,named_pipe

/*

On connect, find out the replication role of the server, and

establish connections to all the peers

*/

my_bool rpl_probe

/*

Each call to mysql_real_query() will parse it to tell if it is a read

or a write, and direct it to the slave or the master

*/

my_bool rpl_parse

/*

If set, never read from a master, only from slave, when doing

a read that is replication-aware

*/

my_bool no_master_reads

#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)

my_bool separate_thread

#endif

enum mysql_option methods_to_use

char *client_ip

/* Refuse client connecting to server if it uses old (pre-4.1.1) protocol */

my_bool secure_auth

/* 0 - never report, 1 - always report (default) */

my_bool report_data_truncation

select A.name,A.sum,B.zong from (select name, sum(xiaoshou) as sum from shujv group by name) A

inner join (select name,zong from shujv order by month desc Limit 1) B

on A.name=B.name

the importance is the latest mysql not yet support the SSL in windows platform.This means its SSL just support unix platform.

Note my source is verbose as following while you feel free:

#include<string.h>

#include<my_global.h>

#include<mysql.h>

#include<my_getopt.h>

static char *opt_host_name=NULL

static char *opt_user_name=NULL

static char *opt_password=NULL

static unsigned int opt_port_num=0

static char *opt_socket_name=NULL

static char *opt_db_name=NULL

static unsigned int opt_flags=0

static MYSQL *conn

static const char *client_groups[]={"client',NULL}

static struct my_option my_opts[]={

{"help",'?',"Display this help and exit",NULL,NULL,NULL,GET_NO_ARG,NO_ARG,0,0,0,0,0,0},

{"host",'h',"Host to connect to",(gptr *) &opt_host_name,NULL,NULL,GET_STR_ALLOC,REQUIRED_ARG,0,0,0,0,0,0}'

{"password",'p',"Password",(gptr *) &opt_password,NULL,NULL,GET_STR_ALLOC,OPT_ARG,0,0,0,0,0,0},

{"port",'P',"Port number",(gptr *) &opt_port_num,NULL,NULL,GET_UINT,REQUIRED_ARG,0,0,0,0,0,0},

{"SOCKET",'S',"Socket path",(gptr *) &opt_socket_name,NULL,NULL,GET_UINT,REQUIRED_ARG,0,0,0,0,0,0},

{"user",'u',"User name",(gptr *) &opt_user_name,NULL,NULL,GET_UINT,REQUIRED_ARG,0,0,0,0,0,0}

}

void

print_error(MYSQL *conn,char *message)

{

fprintf(stderr,"%s\n",message)

if (conn!=NULL)

{

fprintf(stderr,"Error %u (%s)\n"'mysql_errno(conn),mysql_error(conn))

}

}

my_bool

get_one_option(int optid,const struct my_option *opt, char *argument)

{

switch(optid)

{

case'?':

my_print_help(my_opt)

exit(0)

case'p':

if(!argument)

ask_password=1

else

{

opt_password=strdup(argument)

if(opt_password==NULL)

{

print_error(NULL,"could not allocate password buffer")

exit(1)

}

while(*argument)

*argument++='x'

}

break

#include <sslopt-case.h>

}

return(0)

}

int

main(int argc,char *argv[])

{

int opt_err

my_init()

load_defaults("my",client_groups,&argc,&argv)

if((opt_err=handle_options(&argc,&argv,my_opts,get_one_option)))

exit(opt_err)

if(ask_password)

opt_password=get_tty_password(NULL)

if(argc>0)

{

opt_db_name=argv[0]

--argc==argv

}

conn=mysql_init(NULL)

if(conn==NULL)

{

print_error(NULL,"mysql_init() dailed(probably out of memory)")

exit(1)

}

if(mysql_real_connect(conn,opt_host_name,opt_user_name,opt_password,opt_db_name,opt_port_num,opt_socket_name,opt_flags)==NULL)

{

print_error(conn,"mysql_real_connect() failed")

mysql_close(conn)

exit(1)

}

mysql_close(conn)

exit(0)

}

#include<sslopt-longopts.h>

{NULL,0,NULL,NULL,NULL,NULL,GET_NO_ARG,NO_ARG,0,0,0,0,0,0}

}

#ifdef HAVE_OPENSSL

{"ssl",OPT_SLL_SLL,"Enable SSL for connection.Disable with --skip-sll",(gptr*) &opt_use_ssl,NULL,0,GET_BOOL,NO_ARG,0,0,0,0,0,0},

{"ssl-key",OPT_SSL_CERT,"X509 key in PEM format(implies --ssl)",(gptr*) &opt_ssl_key,NULL,0,GET_STR,REQUIRED_ARG,0,0,0,0,0,0},

{"ssl-cert",OPT_SSL_CERT,"X509 cert in PEM format(implies --ssl)",(gptr*) &opt_ssl_cert,NULL,0,GET_STR,REQUIRED_ARG,0,0,0,0,0,0},

{"ssl-ca",OPT_SSL_CA,"CA file in PEM format(check openSSL docs,implies --sl)",(gptr*) &opt_ssl_ca,NULL,0,GET_STR,REQUIRED_ARG,0,0,0,0,0,0},

{"ssl-capath",OPT_SSL_CAPATH,"CA direcory(check openSSL docs,implies --sl)",(gptr*) &opt_ssl_capath,NULL,0,GET_STR,REQUIRED_ARG,0,0,0,0,0,0},

{"ssl-cipher",OPT_SSL_CIPHER,"SSLcipher to use(implies --ssl)",(gptr*) &opt_ssl_cipher,NULL,0,GET_STR,REQUIRED_ARG,0,0,0,0,0,0},

#endif

#ifdef HAVE_OPENSSL

eum options

{

OPT_SSL_SSL=256,

OPT_SSL_KEY'

OPT_SSL_CERT,

OPT_SSL_CA,

OPT_SSL_CAPATH,

OPT_SSL_CIPHER

}

#endif

#ifdef HAVE_OPENSSL

static my bool opt_use_ssl=0

static char *opt_ssl_key=0

static char *opt_ssl_cert=0

static char *opt_ssl_ca=0

static char *opt_ssl_capath=0

static char *opt_ssl_cipher=0

#endif

#ifdef HAVE_OPENSSL

case OPT_SSL_KEY:

case OPT_SSL_CERT:

case OPT_SSL_CA:

case OPT_SSL_CAPATH:

case OPT_SSL_CIPHER:

opt_use_ssl=1

break

#endif

Now put following source to the program sslclient:

conn=mysql_init(NULL)

if(conn==NULL)

{

print_error(NULL,"mysql_init() failed(probably out of memory)")

exit(1)

}

#ifdef HAVE_OPENSSL

if(opt_use_ssl)

mysql_ssl_set(conn,opt_ssl_key,opt_ssl_cert,opt_ssl_ca,opt_ssl_capath,opt_ssl_cipher)

#endif

if(mysql_real_connect(conn,opt_host_name,opt_user_name,_opt_password,opt_db_name,opt_port_num,opt_socket_name,opt_flags)==NULL)

{

print_error(conn,"mysql_real_connect() failed")

mysql_close(conn)

exit(1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7439420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存