C++Builder/Visual C++/Turbo C++ 使用 mysql++ 连接MySQL

开发工具为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&amp;&amp; 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-&gt;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 &lt; 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-&gt;settings-&gt;link-&gt;object/library modules里面加上一个libmysql.lib</mysql.h></string.h></stdio.h></windows.h>
Published At
Categories with 数据库类
comments powered by Disqus