您好,代码如下,希望能帮到您。还有,如果觉得俺答案还可以的话,请记得采纳答案。。
//下面的代码是一个实现C++连接MYSQL数据库的很好的例子
//这里用了建表,插入,检索,删表等常用功能
//我用VC++60生成,已经成功连接了。
//在VC++60中要想把做一下两步准备工作才可以。
//其实就是将头文件和库文件包含进来
#include <winsockh>
#include <iostream>
#include <string>
#include <mysqlh>
using namespace std;
#pragma comment(lib, "ws2_32lib")
#pragma comment(lib, "libmysqllib")
//单步执行,不想单步执行就注释掉
#define STEPBYSTEP
int main() {
cout << "" << endl;
#ifdef STEPBYSTEP
system("pause");
#endif
//必备的一个数据结
MYSQL mydata;
//初始化数据库
if (0 == mysql_library_init(0, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
} else {
cout << "mysql_library_init() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//初始化数据结构
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
} else {
cout << "mysql_init() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//在连接数据库之前,设置额外的连接选项
//可以设置的选项很多,这里设置字符集,否则无法处理中文
if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
cout << "mysql_options() succeed" << endl;
} else {
cout << "mysql_options() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//连接数据
if (NULL != mysql_real_connect(&mydata, "localhost", "root", "test", "test", 3306, NULL, 0))
//这里的地址,用户名,密码,端口可以根据自己本地的情况更改
{
cout << "mysql_real_connect() succeed" << endl;
} else {
cout << "mysql_real_connect() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//sql字符串
string sqlstr;
//创建一个表
sqlstr = "CREATE TABLE IF NOT EXISTS user_info";
sqlstr += "(";
sqlstr += "user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";
sqlstr += "user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";
sqlstr += "user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'";
sqlstr += ");";
if (0 == mysql_query(&mydata, sqlstrc_str())) {
cout << "mysql_query() create table succeed" << endl;
} else {
cout << "mysql_query() create table failed" << endl;
mysql_close(&mydata);
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//向表中插入数据
sqlstr = "INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');";
if (0 == mysql_query(&mydata, sqlstrc_str())) {
cout << "mysql_query() insert data succeed" << endl;
} else {
cout << "mysql_query() insert data failed" << endl;
mysql_close(&mydata);
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//显示刚才插入的数据
sqlstr = "SELECT user_id,user_name,user_second_sum FROM user_info";
MYSQL_RES result = NULL;
if (0 == mysql_query(&mydata, sqlstrc_str())) {
cout << "mysql_query() select data succeed" << endl;
//一次性取得数据集
result = mysql_store_result(&mydata);
//取得并打印行数
int rowcount = mysql_num_rows(result);
cout << "row count: " << rowcount << endl;
//取得并打印各字段的名称
unsigned int fieldcount = mysql_num_fields(result);
MYSQL_FIELD field = NULL;
for (unsigned int i = 0; i < fieldcount; i++) {
field = mysql_fetch_field_direct(result, i);
cout << field->name << "\t\t";
}
cout << endl;
//打印各行
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
while (NULL != row) {
for (int i = 0; i < fieldcount; i++) {
cout << row[i] << "\t\t";
}
cout << endl;
row = mysql_fetch_row(result);
}
} else {
cout << "mysql_query() select data failed" << endl;
mysql_close(&mydata);
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//删除刚才建的表
sqlstr = "DROP TABLE user_info";
if (0 == mysql_query(&mydata, sqlstrc_str())) {
cout << "mysql_query() drop table succeed" << endl;
} else {
cout << "mysql_query() drop table failed" << endl;
mysql_close(&mydata);
return -1;
}
mysql_free_result(result);
mysql_close(&mydata);
mysql_server_end();
system("pause");
return 0;
}
关于VB6 + Access的简单数据库应用问题
最近,经常看到有人提问相关问题,心血来潮有一股冲动,把这个方面的应用在这里介绍一下。
我使用过的VB6提供的数据库连接控件有两个,一个是Data控件另一个是Adodc控件。
考虑到Data控件只能针对本地数据库的开发应用,并且它只支持VB5中的网格控件DBGrid控件,所以这里主要介绍Adodc控件。(注意:VB5的DBGrid控件,需要把DBGRID32OCX文件复制到c:\windows\system32\DBGRID32OCX进行引用)
下面介绍使用Adodc控件与DataGrid控件进行简易数据库的应用:
一.添加Adodc控件与DataGrid控件:
因为这两个控件默认状态下都不在“控件工具箱”内,所以需要手动添加到“控件工具箱”内。
1.添加Adodc控件:
在VB6里,通过菜单来添加该控件,方法:[工程] -- [部件],出现“部件”对话框,在“控件”选项卡里,通过滚动条,找到并勾选:Microsoft Ado Data Control 60 (SP6) (OLEDB),然后单击[确定],这样该控件图标就出现在“控件工具箱”里了,你可以像使用其它你熟悉的控件一样,添加到窗体上。
2.添加DataGrid控件:
方法与过程与添加Adodc控件过场相似,勾选的是:Microsoft DataGrid Control 60 (SP6) (OLEDB)。
二.连接数据:
为了说明,假设你有数据库文件“数据库Mdb”,在里边有数据表“学生基本信息”和“学生成绩”。
“学生基本信息”有字段:学号、姓名、性别(都是字符类型)
“学生成绩”有字段:学号、语文、数学、英语(学号字符类型,其它数值类型)
假设你添加的控件为:Adodc1和DataGrid。
1.先将Adodc1控件连接到数据库文件:(有两种方法)
方法1:设置Adodc1的ConnectionString属性,在属性窗口点带有省略号的按钮…选[生成] -- 选Microsoft Jet 40 OLE DB Privider -- [下一步]--单击省略号按钮,定位到你保存“数据库MDB”的位置,选中该数据库,单击[打开],连接成功了,可以测试一下。回到窗体,你会看到Adodc1的ConnectionString 属性里的一大串内容。
方法2:也可以用命令直接设置连接,在运行时通过执行该命令来完成连接,命令如下:
Adodc1ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\ADODC控件实例\数据库mdb;Persist Security Info=False",值得说明以下,这个双引号里的内容,是我的实际情况,因为我在VB98文件夹里,建立了子文件夹“\ADODC控件实例”,并把使用的数据库文件复制到该文件夹里了。这里引号里的一大串内容,你可以从刚在属性窗口里直接复制过来,然后做一些改动,要注意这个改动往往是必要的也是非常关键的,因为考虑到一般情况,你的应用程序不可能安装到“\VB98”这个文件夹,所以一般的改动如下:
将“Source=C:\Program Files\Microsoft Visual Studio\VB98\ADODC控件实例\数据库mdb”改为“Source=" & AppPath & "\数据库mdb”即完整的情况如下:
Adodc1ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=" & AppPath & "\数据库mdb;Persist Security Info=False"
接下来连接到数据表“学生基本信息”:
方法1:设置Adodc1的RecordSource 属性,在属性窗口点带有省略号的按钮,在“命令类型”里,选:2 – adCmdTable,在"表或存储过程名称"里,选“学生基本信息”,单击确定,你会看到ADODC1的RecordSource 属性栏里是“学生基本信息”。
方法2:也可以用命令直接设置连接:
Adodc1RecordSource = "学生基本信息"
至此,完成了ADODC1控件与数据库的连接。
三.将DataGrid1绑定到ADODC1控件:
选中窗体上的DataGrid1,设置其DataSource 属性,点右边的下拉按钮,选ADODC1,完成绑定。
设置DataGrid1显示内容与模式,右击窗体上的DataGrid1控件,选"检索字段",选[Y],完成。
至此,你启动窗体,就可以在DataGrid1控件里看到效果了。
可以右击窗体上的DataGrid1控件,选“属性”,进一步作设置,比如:“允许添加”、“允许删除”。
四.常用 *** 作数据库的命令:
1.刷新记录集:
Adodc1ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=" & AppPath & "\数据库mdb;Persist Security Info=False" ‘连接数据库文件
Adodc1RecordSource = "学生基本信息" ‘连接数据表
Adodc1Refresh ‘刷新记录集,这个不能漏
2.移动记录:
Adodc1RecordsetMoveFirst ‘记录指针移动到第1条记录
Adodc1RecordsetMoveNext ‘记录指针移动到下1条记录
Adodc1RecordsetMoveLast ‘记录指针移动到最后1条记录
Adodc1RecordsetMovePrevious 记录指针移动到前1条记录
注意:上面执行Adodc1Refresh后,如果数据表非空,就自动将记录指针指向第1条记录。
3.编辑更新数据:
首先将记录移动到需要编辑更新的记录,当然在DataGrid1里可以直观地进行修改编辑,也可以用命令;
Adodc1RecordsetFields ("姓名") = “王伟” ‘用“王伟”更新当前记录的“姓名”字段
Adodc1RecordsetUpdate ‘执行更新,注意这一步不能漏
当然,你可以对某条记录的若干个字段进行更新后,再一次进行Update
4.添加记录:
Adodc1RecordsetAddNew ‘在数据表的末尾添加一条空记录(所有字段为空)
说明:如果用命令要增加一条记录信息,通常:
1)先用AddNew
2)然后用:
For i = 0 To Adodc1RecordsetFieldsCount - 1
Adodc1RecordsetFields(i) = 内容i
Next i
3)最后用:Adodc1RecordsetUpdate
5.删除记录:
首先移动到你要删除那条记录,然后执行:Adodc1RecordsetDelete
五.关于SQL语句在连接数据表时的一些基本用法:
前面介绍用Adodc控件连接好数据库文件后,要设置其RecordSource来连接数据表,即:Adodc1RecordSource = "学生基本信息"
其实RecordSource属性,可以使用SQL语法,常用Select语句格式如下:
Select 字段列表 From 数据表名 [Where …] [Order By …]
其中:
字段列表– 是指返回的记录,包含哪些字段,字段名之间用逗号分隔
数据表名 -- 是指从哪个数据表返回信息
例如1:
Adodc1RecordSource = "Select 学号,姓名 From 学生基本信息"
例如2:
Adodc1RecordSource = "Select From 学生基本信息"
例2的结果与Adodc1RecordSource = "学生基本信息"相同。其中“”表示所有字段。
Where子句– 根据条件筛选记录
Order By 子句– 设置排序
例如3:
Adodc1RecordSource = "Select From 学生基本信息 Where 性别=’女’"
仅返回女生记录。
例如4:
Adodc1RecordSource = "Select From 学生基本信息 Where 学号>’300’ And性别=’男’"
仅返回学号大于“300”的男生记录。
例如5:
Adodc1RecordSource = "Select From 学生基本信息 Order By 学号"
按照学号从小到大(升序)的次序,返回记录。
例如6:
Adodc1RecordSource = "Select From 学生基本信息 Order By 学号/D"
按照学号从大到小(降序)的次序,返回记录。
注意:/D表示从大到小,/A表示从小到大,/A是缺省表示。
关于SQL语法,可以到以下网址查询并运用,非常有价值:
>
在连接前加入一个
if dir(trim(text1text))<>"" then
msgbox "存在"
else
msgbox "不存在"
endif
加入这一种判断语句,就可以判断数据库文件是否存在了
以上就是关于c++代码 连接mysql数据库 怎么连接啊全部的内容,包括:c++代码 连接mysql数据库 怎么连接啊、vb连接数据库 求教!!!。。。、vb判断某个数据库是否存在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)