开发工具为C++Builder/Visual C++/Turbo C++,
---------------------------------------------------------------
用MYSQL提供的API函数。
---------------------------------------------------------------
你说的那些是开发工具.mysql提供了C的开发接口你可以参考下面这篇文章
用C语言编写访问MySQL的程序
前几天拿MySQL的manual看了看,发现用C语言访问MySQL也是很方便的。下面是我的程序的例子:
#include "mysql/mysql.h"
main()
{
MYSQL data;
MYSQL *pdata;
MYSQL_RES *result;
MYSQL_ROW row;
char sqlcommand[80];
pdata = mysql_connect(&data,"localhost", "root", "testroot");
if(pdata){
printf("ok, connected!\n");
mysql_select_db( pdata, "966info");
sprintf( sqlcommand, "select * from %s", "966table");
mysql_query( pdata, sqlcommand);
result = mysql_use_result( pdata);
row = mysql_fetch_row( result); // 获得结果中的下一条记录
mysql_close( pdata);
}
}
编译的时候必须加参数, 与mysql的库连接 -lmysqlclient, 例如: gcc -o test test.c -lmysqlclient
我还没来得急仔细看其他的MySQL函数说明,有兴趣的朋友不妨好好“研究研究”? 来交流交流。
===========================================================================
MySQL客户端应用的开发
---- MySQL提供了丰富的数据接口API,包括C、C++、Perl、PHP、Python、TCL等API和
JDBC,ODBC接口。出于性能考虑,我们采用了MySQL的C API进行开发。现以Visual C++
环境为例,作一简单介绍。
---- 新建一Win32 Console Application的Project,把“c:\mysql\include”添加到编
译选项的包含路径中(在Project Options中加入 /I "d:\mysql\include")。新建一m
ain.c文件,主体如下:
#include
1<windows.h>
2#include <stdio.h>
3#include <string.h>
4#include <mysql.h>
5int main( int argc, char * argv[] )
6{
7char szTargetDSN[] = "test";
8char szSqlText[500]="";
9char aszFlds[ 25 ][ 25 ];
10MYSQL * myData ;
11MYSQL_RES * res ;
12MYSQL_FIELD * fd ;
13MYSQL_ROW row ;
14int i,j,k;
15BOOL bCreate = TRUE;
16if ( (myData = mysql_init((MYSQL*) 0))
17//初始化数据结构
18&& mysql_real_connect( myData, NULL,
19//连接数据库
20"root", " your_password ", szTargetDSN,
21MYSQL_PORT, NULL, 0 ) )
22{
23if(bCreate)
24{
25sprintf(szSqlText, //构造SQL语句
26"create table mytable "
27//新建一张表
28"(time datetime, s1 char(6), "
29"s2 char(11), s3 int, s4 int)");
30if (mysql_query( myData, szSqlText))
31//执行SQL语句
32{//执行SQL语句出错
33ErrLog( "Can't create table") ;
34mysql_close( myData ) ;
35return FALSE ;
36}
37}
38sprintf(szSqlText,
39"insert into mytable "
40//向表中插入数据
41"values('2000-3-10 21:01:30',"
42//注意时间的格式
43"'Test','MySQLTest',2000,3)");
44if (mysql_query( myData, szSqlText))
45{//执行SQL语句出错
46ErrLog( "Can't insert data to table") ;
47mysql_close( myData ) ;
48return FALSE ;
49}
50sprintf(szSqlText, "select * from mytable ");
51if (mysql_query( myData, szSqlText))
52//进行数据检索
53{
54//执行SQL语句出错
55mysql_close( myData ) ;
56return FALSE ;
57}
58else
59{
60res = mysql_store_result( myData ) ;
61//取得查询结果
62i = (int) mysql_num_rows( res ) ;
63//取得有效记录数
64printf( "Query: %s\n%ld records found:
65\n", szSqlText, i ) ;
66for ( i = 0 ; fd = mysql_fetch_field( res ) ;
67i++ )
68strcpy( aszFlds[ i ], fd->name ) ;
69//取得各字段名
70for (i=1; row = mysql_fetch_row( res ); )
71//依次读取各条记录
72{j = mysql_num_fields( res ) ;
73//取得记录中的字段数
74printf( "Record #%ld:-\n", i++ ) ;
75for ( k = 0 ; k < j ; k++ )
76//输出各字段的值
77printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ],
78(((row[k]==NULL) ¦ ¦
79(!strlen(row[k])))?"NULL":row[k])) ;
80puts( "==============================\n" ) ;
81}
82mysql_free_result( res ) ;
83}
84}
85else
86{//连接数据库出错
87ErrLog( "Can't connect to the mysql server ") ;
88mysql_close( myData ) ;
89return FALSE ;
90}
91mysql_close( myData ) ;
92return TRUE ;
93}
94\---- 对其中几个函数作简单说明,详细说明,可参考MySQL文档:
95\---- 1. MYSQL *mysql_init(MYSQL *mysql)
96\---- 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。参数
97mysql为指向该结构的指针,如果mysql为NULL,则新建并初始化一个MYSQL的数据结构。
98新建的结构将在mysql_close()中释放。
99\---- 若成功,返回初始化的MYSQL数据结构的指针,否则返回NULL。
100\---- 2. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
101\---- const char *user, const char *passwd, const char *db,
102\---- unsigned int port, const char *unix_socket, unsigned int client_flag)
103\---- 与MySQL数据库引擎建立连接。在执行进一步的数据操作之前,必须保证mysql_re
104al_connect()成功返回。
105\---- 参数mysql是mysql_init()的返回值;
106\---- 参数host是运行MySQL数据库引擎的机器的TCP/IP主机名,如为NULL则默认为“lo
107calhost”;
108\---- 参数user和passwd是MySQL数据库的合法用户和口令;
109\---- 参数db是连接的数据库名;
110\---- 参数port,unix_socket和client_flag一般取默认值。
111\---- 3. int mysql_query(MYSQL *mysql, const char *query)
112\---- 执行query字符串中的SQL语句,query必须以0结尾。如果成功,返回0。
113\---- 4. MYSQL_RES *mysql_store_result(MYSQL *mysql)
114\---- 返回SELECT,SHOW,DESCRIBE, EXPLAIN等语句执行的结果。函数新建一个MYSQL_
115RES的数据结构,把结果存储在该结构中。如果查询没有匹配的结果,则返回空数据集。
116处理完结果集后,必须调用mysql_free_result()。
117\---- 如果出错,返回NULL,否则返回MYSQL_RES结构的指针。
118\---- 5. MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
119\---- 取回结果集中的下一条记录,如果没有记录或出错,返回NULL。一条记录中的字段
120数可以用mysql_num_fields(result)获得,各字段的值可以用row[0] 到 row[mysql_nu
121m_fields(result)-1]的数
122
123
124=======================================================================
125
126在vc中会出现连接错误的:
127connect1.obj : error LNK2001: unresolved external symbol _mysql_close@4
128connect1.obj : error LNK2001: unresolved external symbol _mysql_query@8
129connect1.obj : error LNK2001: unresolved external symbol _mysql_real_connect@32
130connect1.obj : error LNK2001: unresolved external symbol _mysql_init@4
131Debug/connect1.exe : fatal error LNK1120: 4 unresolved externals
132
133不知道这个要如何解决.忘指教
134
135
136
137在project->settings->link->object/library modules里面加上一个libmysql.lib</mysql.h></string.h></stdio.h></windows.h>