用ADO怎么连接Access数据库?

不是用控件,用ADO类库怎么连接Access数据库?从ADO派生出一个类,但是在程序中没有声明这个类的对象,那么这些代码怎么实现,难道是在类中自动实现?... 不是用控件,用ADO类库怎么连接Access数据库?
从ADO派生出一个类,但是在程序中没有声明这个类的对象,
那么这些代码怎么实现,难道是在类中自动实现?
展开
 我来答
du瓶邪
2015-06-16 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2936万
展开全部
步骤如下:
一、用有源ODBC DSN的方法和无源OLE DB的方法连接数据库:
1、无源OLE DB:
string strConn="Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=intels.mdb" ;
2、有源ODBC DSN:
string strConn="Data Source=intels";
如果采用ADO.NET连接SQL Server或者Oracle,方法和VB中连接相应数据的连接字符串一致。
二、开始连接数据库:
ADOConnection Conn = new ADOConnection(strConn);
三、执行一个select SQL 查询:
string strSQL = "Select id from test" ;
ADOCommand ADOCmd=new ADOCommand(conn,Conn);
Conn.Open();
ADODataReader reader;
ADOCmd.Execute(out reader);
四、得到ADODataReader中包含的数据:
先执行:
reader.Read();
然后就可以取得数值:
reader["id"].ToString();
依次类推。
五、delete(删除)语句,insert和update相同:
strSQL="delete from test where id=’1’";
//strSQL="insert into test values(’1’)";
//strSQL="update test set id=’1’";
ADOCommand ADOCmd=new ADOCommand(conn,Conn);
Conn.Open();
ADOCmd.Execute();
匿名用户
2011-07-25
展开全部
_ConnectionPtr m_pConnection;

CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。
try
{
// 打开本地Access库db1.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"<<endl;
return FALSE;
}
//-------------------------------------------------------------------------------------
//建立数据集
//-------------------------------------------------------------------------------------
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。
try
{
m_pRecordset->Open("SELECT * FROM Home2",
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
//AfxMessageBox(e->ErrorMessage());
cout<<e->ErrorMessage()<<endl;
}

//--------------------------------------------------------------------------------------
//读取数据
//--------------------------------------------------------------------------------------
_variant_t var;
char *strID,*strX,*strY;
float X,Y;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
cout<<"表内数据为空"<<endl;
return 1;
}
// 读入库中各字段并加入列表框中
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("ID");
if(var.vt != VT_NULL)
strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t转字符串
var = m_pRecordset->GetCollect("X");
if(var.vt != VT_NULL)
strX=_com_util::ConvertBSTRToString((_bstr_t)var);
var = m_pRecordset->GetCollect("Y");
if(var.vt != VT_NULL)
strY=_com_util::ConvertBSTRToString((_bstr_t)var);
cout<<strID<<"is"<<strX<<" "<<strY<<endl;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
cout<<e->ErrorMessage()<<endl;
}

//--------------------------------------------------------------------------------------
//关闭数据集
m_pRecordset->Close();
m_pRecordset = NULL;
//--------------------------------------------------------------------------------------
//关闭数据库连接
//--------------------------------------------------------------------------------------
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yzx_VS_nero
2011-08-04
知道答主
回答量:8
采纳率:0%
帮助的人:1.4万
展开全部
要自己创建这个类(关于ADO的类)
可以参考如下代码:
ADOConn::ADOConn()
{

}

ADOConn::~ADOConn()
{

}

void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect="uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=AddressBook.mdb;";//这段就是连接Access数据库
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
return m_pRecordset;
}

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
_variant_t RecordsAffected;
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}

void ADOConn::ExitConnect()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yunlkong
2011-08-10 · TA获得超过5711个赞
知道大有可为答主
回答量:9695
采纳率:0%
帮助的人:1.9亿
展开全部
CSize本身属于无量纲的单位,不存在换算问题。
你上面获得的Size,本身单位就是像素。
不过CreateFont函数本身w并不能精确控制创建的字体,顶多创建一个接近你的要求的字体。
如果你的字体比例太奇怪,CreateFont是做不到和你要求一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yewei142857
2011-07-25
知道答主
回答量:37
采纳率:0%
帮助的人:17.4万
展开全部
派生出一个新的类基于ADO的。。。。。。自然就会要求及配置了。。。选择好你的数据源就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式