using System.Data.OleDb
class OleDbTest{
public static void Main()
{
//创建数据库连接
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0Data Source=c:\\db1.mdb")
//创建command对象并保存sql查询语句
OleDbCommand aCommand = new OleDbCommand("select * from emp_test", aConnection)
try
{
aConnection.Open()
//创建datareader 对象来连接到表单
OleDbDataReader aReader = aCommand.ExecuteReader()
Console.WriteLine("This is the returned data from emp_test table")
//循环遍历数据库
while(aReader.Read())
{
Console.WriteLine(aReader.GetInt32(0).ToString())
}
//关闭reader对象
aReader.Close()
//关闭连接,这很重要
aConnection.Close()
}
//一些通常的异常处理
catch(OleDbException e)
{
Console.WriteLine("Error: {0}", e.Errors[0].Message)
}
}
}
成功运行这个程序的步骤
1.用msaccess创建一个名叫db1.mdb的数据库
2.创建一个名叫emp_test的表单
3.使它包含下列数据域
emp_code int
emp_name text
emp_ext text
4.将上面的代码保存到sample.cs文件中
5.确保数据库位于c:\并确保mdac2.6或是更新的版本已经被安装
6.编译运行
环境配置:1. 先安装你的Access数据库(微软Office 2016中含有或者单独下载,下载地址:http://msdn.itellyou.cn/ 左侧选择应用程序一栏,注意选择下载64位,即标有X64的)
特殊情况查看意外解决方案 (A)
2. 安装Microsoft Access database engine 2007,他的作用暂时可理解为我们所写的程序与Access之间的沟通桥梁--“传话人”。
Microsoft Access database engine 2010(可以安装,但后面的代码是2007的,所以暂时建议使用2007)
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
Microsoft Access database engine 2007
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=23734
特殊情况查看意外解决方案 (C)
连接与测试代码:
本例代码使用VS2010以上版本测试
建议去文末下载写好的含注释的测试代码看。
1. 新建你的数据库表
打开Access
选择空白数据库,为你的数据库中表项起一个名字 如 Test
设计你的存储表格
本例附有测试表格database1.accdb
2.
在你程序的stdafx.h头文件中加入
#import"C:/ProgramFiles/CommonFiles/System/ADO/msado15.dll"
rename("EOF","adoEOF"), rename("BOF","adoBOF")
(如果加载失败的话,去c:\program files\common files\system\ado查看是否有msado15.dll)
3.测试代码介绍
// LinkDBForHX.cpp : 定义控制台应用程序的入口点。
[cpp] view plain copy
#include "stdafx.h"
#include<iostream>//atlstr
#include<atlstr.h>
using namespace ADODB
using namespace std
class AdoAccess {
public:
_ConnectionPtr HX_pConnection// 数据库指针
_RecordsetPtrHX_pRecordset// 命令指针
_CommandPtr HX_pCommand// 记录指针
void OnInitADOConn() {
::CoInitialize(NULL)
try
{
HX_pConnection.CreateInstance(__uuidof(Connection))//等价于 //HX_pConnection.CreateInstance("ADODB.Connection")
//此句包含定位你数据库的所需的访问信息
_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0Data Source=Database1.accdbPersist Security Info=False "
//测试//_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=Database1.accdbPersist Security Info=False"//此句包含定位你数据库的所需的访问信息
//测试//_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0Driver = { Microsoft Access Driver(*.mdb, *.accdb) }DBQ =Database1.accdbPersist Security Info=False "
//此句包含定位你数据库的所需的访问信息
//连接master数据库,无密码。
HX_pConnection->Open(strConnect,"","",adModeUnknown) //连接数据库
cout <<"连接成功,并获得智能指针" <<endl
}
catch (_com_error e)
{
cout <<e.Description() <<endl
}
}
void ExitConnect() {
if (HX_pRecordset != NULL)
HX_pRecordset->Close()
HX_pConnection->Close()
::CoUninitialize()
}
}
int main()
{
AdoAccess dataBase
//初始化
dataBase.OnInitADOConn()
dataBase.HX_pRecordset.CreateInstance("ADODB.Recordset")
//选择名为Test的表格
dataBase.HX_pRecordset->Open("select * from Test",
dataBase.HX_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText)
int i = 0
//读取其中的name字段所有数据,并显示
while (!dataBase.HX_pRecordset->adoEOF)
{
_variant_t var
string strValue
var = dataBase.HX_pRecordset->GetCollect("name")
//其他类似,都是通过HX_pRecordset传递SQL语句执行查找、添加、删除等命令
if (var.vt != VT_NULL)
strValue = _com_util::ConvertBSTRToString((_bstr_t)var)
++i
cout <<"name " <<i <<" " <<strValue <<endl
dataBase.HX_pRecordset->MoveNext()
}
//卸载com组件
dataBase.ExitConnect()
int xxxx = 0
cout <<"输入数字结束\n"
cin >>xxxx
return 0
}
意外情况解决方案
A 描述:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
请正确安装环境配置中的第一步
B 若A无法解决问题。
选择 该应用程序的 应用程序池 ------>选择高级设置--------->启用32位应用程序 ------->true
*** 作如下:
按下win + R
在d出的对话框中输入inetmgr,然后按回车键
选择最左侧
点击应用程序池
再点击下图的DefaultAPPPool
选择高级设置
选择启用32位应用程序 ---置为True.
最后选择确认保存
C 重新安装 Microsoft Access databaseengine 2007
D 程序若提示缺少符号集,请下载相关符号集或者在联网状态下动态加载
#include<mysql/mysql.h>
#include<stdio.h>
intmain()
{
MYSQL*conn
MYSQL_RES*res
MYSQL_ROWrow
char*server="localhost"//本地连接
char*user="root"//
char*password="525215980"//mysql密码
char*database="student"//数据库名
char*query="select*fromclass"//需要查询的语句
intt,r
conn=mysql_init(NULL)
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf("Errorconnectingtodatabase:%s\n",mysql_error(conn))
}else{
printf("Connected...\n")
}
t=mysql_query(conn,query)
if(t)
{
printf("Errormakingquery:%s\n",mysql_error(conn))
}else{
printf("Querymade...\n")
res=mysql_use_result(conn)
if(res)
{
while((row=mysql_fetch_row(res))!=NULL)
{
//printf("num=%d\n",mysql_num_fields(res))//列数
for(t=0t<mysql_num_fields(res)t++)
printf("%8s",row[t])
printf("\n")
}
}
mysql_free_result(res)
}
mysql_close(conn)
return0
}
扩展资料
C语言使用注意事项:
1、指针是c语言的灵魂,一定要灵活的使用它:
(1)、指针的声明,创建,赋值,销毁等
(2)、指针的类型转换,传参,回调等
2、递归调用也会经常用到:
(1)、递归遍历树结构
(2)、递归搜索
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)