看了半天也没看懂 语法基本懂了的是细节(尤其是编译 ,用DOS命令,连接)还是 感觉没明白 把书上的代码搬到编辑器上 也不好使
怎么连接?
说:把在安装目录下的mysql.h和include下的mysqlclient.lib 提取出 但我也没找到他们呀 没有这两个文件 我下的是5.1版是不是还少什么东西没下 还是安装的不对?
还有 有文件后连接的具体过程能不能给讲一下
一步一步的 希望不要给我网址让我看 我看半天了没看明白 谢谢好心人了!!
怎么连接?
说:把在安装目录下的mysql.h和include下的mysqlclient.lib 提取出 但我也没找到他们呀 没有这两个文件 我下的是5.1版是不是还少什么东西没下 还是安装的不对?
还有 有文件后连接的具体过程能不能给讲一下
一步一步的 希望不要给我网址让我看 我看半天了没看明白 谢谢好心人了!!
http://dev.mysql.com/downloads/connector/
下载对应驱动
我现在 把mysql.h和mysqlclient.lib 找到了
有人能告我一下怎么做吗 楼上的注册驱动 获得链接 准备语句 执行查询 关闭链接
怎么整的?
C#连接MySql数据库的方法-用MySQLDriverCS连接MySQL数据库。先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中。注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeC#连接MySql数据库代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Data.Odbc;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingMySQLDriverCS;
namespacemysql{
publicpartialclassForm1:Form{
publicForm1(){
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse){
MySQLConnectionconn=null;
conn=newMySQLConnection(newMySQLConnectionString
("localhost","inv","root","831025").AsString);
conn.Open();
MySQLCommandcommn=newMySQLCommand("setnamesgb2312",conn);
commn.ExecuteNonQuery();
stringsql="select*fromexchange";
MySQLDataAdaptermda=newMySQLDataAdapter(sql,conn);
DataSetds=newDataSet();
mda.Fill(ds,"table1");
this.dataGrid1.DataSource=ds.Tables["table1"];
conn.Close();
}
}
}
新建一Win32 Console Application的Project,把“c:\mysql\include”添加到编译选项的包含路径中(在Project Options中加入 /I "d:\mysql\include&quounter.cgol.net 魈迦缦拢?#include <windows.h>#include <stdio.h>#include <string.h>#include <mysql.h>int main( int argc, char * argv[] ){char szTargetDSN[] = "test";char szSqlText[500]="";char aszFlds[ 25 ][ 25 ];MYSQL * myData ;MYSQL_RES * res ;MYSQL_FIELD * fd ;MYSQL_ROW row ;int i,j,k;BOOL bCreate = TRUE;if ( (myData = mysql_init((MYSQL*) 0))//初始化数据结构&& mysql_real_connect( myData, NULL,//连接数据库"root", " your_password ", szTargetDSN,MYSQL_PORT, NULL, 0 ) ){if(bCreate){sprintf(szSqlText, //构造SQL语句"create table mytable "//新建一张表"(time datetime, s1 char(6), ""s2 char(11), s3 int, s4 int)");if (mysql_query( myData, szSqlText))//执行SQL语句{//执行SQL语句出错ErrLog( "Can't create table") ;mysql_close( myData ) ;return FALSE ;}}sprintf(szSqlText,"insert into mytable "//向表中插入数据"values('2000-3-10 21:01:30',"//注意时间的格式"'Test','MySQLTest',2000,3)");if (mysql_query( myData, szSqlText)){//执行SQL语句出错ErrLog( "Can't insert data to table") ;mysql_close( myData ) ;return FALSE ;}sprintf(szSqlText, "select * from mytable ");if (mysql_query( myData, szSqlText))//进行数据检索{//执行SQL语句出错mysql_close( myData ) ;return FALSE ;}else{res = mysql_store_result( myData ) ;//取得查询结果i = (int) mysql_num_rows( res ) ;//取得有效记录数printf( "Query: %s\n%ld records found:\n", szSqlText, i ) ;for ( i = 0 ; fd = mysql_fetch_field( res ) ;i++ )strcpy( aszFlds[ i ], fd->name ) ;//取得各字段名for (i=1; row = mysql_fetch_row( res ); )//依次读取各条记录{j = mysql_num_fields( res ) ;//取得记录中的字段数printf( "Record #%ld:-\n", i++ ) ;for ( k = 0 ; k < j ; k++ )//输出各字段的值printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ],(((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ;puts( "==============================\n" ) ;}mysql_free_result( res ) ;}}else{//连接数据库出错ErrLog( "Can't connect to the mysql server ") ;mysql_close( myData ) ;return FALSE ;}mysql_close( myData ) ;return TRUE ;}---- 对其中几个函数作简单说明,详细说明,可参考MySQL文档:---- 1. MYSQL *mysql_init(MYSQL *mysql)---- 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。参数mysql为指向该结构的指针,如果mysql为NULL,则新建并初始化一个MYSQL的数据结构。新建的结构将在mysql_close()中释放。---- 若成功,返回初始化的MYSQL数据结构的指针,否则返回NULL。---- 2. MYSQL *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 int client_flag)---- 与MySQL数据库引擎建立连接。在执行进一步的数据操作之前,必须保证mysql_real_connect()成功返回。---- 参数mysql是mysql_init()的返回值;---- 参数host是运行MySQL数据库引擎的机器的TCP/IP主机名,如为NULL则默认为“localhost”;---- 参数user和passwd是MySQL数据库的合法用户和口令;
这是书上的小程序我取一部分基本功能:(查询数据库中的数据)
#include "stdio.h"
#include "mysql.h"
main()
{
FILE *fp;
char linebuffer[1000];
cnost char *sep=":";
char *prev_p;
long next_p;
char host[100];
char user[50];
char pass[50];
char db[50];
int choice;
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL_FIELD *field;
fp=fopen("expenses.conf","r");
if(fp!=NULL)
{
memset(linebuffer,'\0',sizeof(linebuffer));
memset(host,'\0',sizeof(host));
memset(user,'\0',sizeof(user));
memset(pass,'\0',sizeof(pass));
memset(db,'\0',sizeof(db));
fscanf(fp,"%s",linebuffer);
if(strlen(linebuffer)!=0)
{
prev_p=linbuffer;
strncpy(host,prev_p,next_p=strstr(prev_p,sep)-prev_p_);
prev_p=(char*)((long)prev_p+next_p+1);
strncpy(user,prev_p,next_p=strstr(prev_p,sep)-prev_p_);
prev_p=(char*)((long)prev_p+next_p+1);
strncpy(pass,prev_p,next_p=strstr(prev_p,sep)-prev_p_);
prev_p=(char*)((long)prev_p+next_p+1);
strcpy(db,prev_p);
}
fclose(fp);
}
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,host,user,pass,db,0,NULL,0))
{
exit();
}
printf("\n");
printf("[1] view expense totals\n");
printf("[2] add expense item\n");
printf("[3] quit\n");
printf("\n");
printf("select an option from the list above:");
scanf("%d",&choice);
printf("\n");
if(choice==1)
{
if(mysql_query(&mysql,"SELECT cname,SUM(amt) FROM cate,data WHERE care.cid=data.cid GROUP BY cname")!=0)
{
exit();
}
else
{
if(result=mysql_store_result(&mysql))
{
int numrecords=mysql_num_rows(result);
int i;
for(i=0;i<numrecords;i++)
{
row=mysql_fetch_row(result);
printf("%s=%s\n",row[0],row[1]);
}
printf("\n");
mysql_free_result(result);
}
}
}
mysql_close(&mysql);
exit();
}
我用的是GCC(1)写完了后运行不好使不显示错误也不给运行没反应怎么回事
书上让保存成a.c保存了(保存后自动是a.c了) 书上要用mysql.h和mysqlclient.lib 我也找到了问题(2) 然我编译[user@host]$/usr/bin/gcc a.c-o a.bin -i/usr/local/mysql/include -l/usr/local/mysql/lib -lmysclient -lz 问题来了!
意思我明白 但是我之前没用过编译编完C直接运行了 怎么编 用下什么软件吗?还是自带的软件 在哪找 是DOS吗?
问题(3)假如我编译完了后怎么做 他要的mysql.h和mysqlclient.lib和我编的a.c都放到哪 随便放哪都行吗?(4)一旦编译成功应该有个a.bin文件 在命令提示下输入[user@host]$./a.bin 如果正确就连上了 那么连上了后是不是就进入了C语言程序了然后用命令提示输入C语言所要输入的数据?
(5)最后 我上面的程序够吗 书上就给这个还要什么吗 或者头文件是不是少了什么
然后就输入了C语言命令了 不明白
2 #include <string.h>
3 #include <stdlib.h>
4 #include <stdio.h>
5
6 /*定义了一些数据库连接需要的宏*/ 7 #define HOST "localhost"
8 #define USERNAME "ABitNo"
9 #define PASSWORD "ABitNo"
10 #define DATABASE "abitno"
11
12 /*这个函数用来执行传入的sql語句*/
13 void exe_sql(char* sql) {
14
15 MYSQL my_connection; /*这是一个数据库连接*/
16 int res; /*执行sql語句后的返回标志*/
17
18 /*初始化mysql连接my_connection*/
19 mysql_init(&my_connection);
20
21 /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并
22 返回一个值,返回不为空证明连接是成功的*/
23 if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
24 0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/
25
26 printf("数据库执行exe_sql连接成功!\n");
27
28 /*这句话是设置查询编码为utf8,这样支持中文*/
29 mysql_query(&my_connection, "set names utf8");
30
31 /*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,
32 这会返回一个int值,如果为0,证明語句执行成功*/
33 res = mysql_query(&my_connection, sql);
34
35 if (res) {/*现在就代表执行失败了*/
36 printf("Error: mysql_query !\n");
37 /*不要忘了关闭连接*/
38 mysql_close(&my_connection);
39 } else {/*现在就代表执行成功了*/
40 /*mysql_affected_rows会返回执行sql后影响的行数*/
41 printf("%d 行受到影响!\n\n", mysql_affected_rows(&my_connection));
42 /*不要忘了关闭连接*/
43 mysql_close(&my_connection);
44 }
45
46 } else {
47 /*数据库连接失败*/
48 printf("数据库执行exe_sql连接失败!\n");
49 }
50 }
51
52 /*这个函数用来执行传入的sql語句,并打印出查询結果*/
53 void query_sql(char* sql) {
54 MYSQL my_connection; /*这是一个数据库连接*/
55 int res; /*执行sql語句后的返回标志*/
56 MYSQL_RES *res_ptr; /*指向查询结果的指针*/
57 MYSQL_FIELD *field; /*字段结构指针*/
58 MYSQL_ROW result_row; /*按行返回的查询信息*/
59
60 int row, column; /*查询返回的行数和列数*/
61 int i, j; /*只是控制循环的两个变量*/
62
63 /*初始化mysql连接my_connection*/
64 mysql_init(&my_connection);
65
66 /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并
67 返回一个值,返回不为空证明连接是成功的*/
68 if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
69 0, NULL, CLIENT_FOUND_ROWS)) {/*Connection success*/
70
71 printf("数据库查询query_sql连接成功!\n");
72
73 /*这句话是设置查询编码为utf8,这样支持中文*/
74 mysql_query(&my_connection, "set names utf8");
75
76 /*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,
77 这会返回一个int值,如果为0,证明語句执行成功*/
78 res = mysql_query(&my_connection, sql);
79
80 if (res) { /*现在就代表执行失败了*/
81 printf("Error: mysql_query !\n");
82 /*不要忘了关闭连接*/
83 mysql_close(&my_connection);
84 } else { /*现在就代表执行成功了*/
85 /*将查询的結果给res_ptr*/
86 res_ptr = mysql_store_result(&my_connection);
87
88 /*如果结果不为空,就把结果print*/
89 if (res_ptr) {
90 /*取得結果的行数和*/
91 column = mysql_num_fields(res_ptr);
92 row = mysql_num_rows(res_ptr) + 1;
93 printf("查询到 %lu 行 \n", row);
94
95 /*输出結果的字段名*/
96 for (i = 0; field = mysql_fetch_field(res_ptr); i++)
97 printf("%s\t", field->name);
98 printf("\n");
99
100 /*按行输出結果*/
101 for (i = 1; i < row; i++) {
102 result_row = mysql_fetch_row(res_ptr);
103 for (j = 0; j < column; j++)
104 printf("%s\t", result_row[j]);
105 printf("\n");
106 }
107
108 }
109
110 /*不要忘了关闭连接*/
111 mysql_close(&my_connection);
112 }
113 }
114 }
115
116 int main(int argc, char *argv[]) {
117 /*测试下向里面插入数据*/
118 char *exe = "insert into abitno values('ABitNo','http://ABitNo.LinPie.com');";
119 exe_sql(exe);
120
121 /*测试下查询*/
122 char *query = "select * from abitno;";
123 query_sql(query);
124
125 return 0;
126 }