VC++6.0通过MFC 创建了 对话框 ,然后怎样通过SQL Server 连接到数据库?

VC++6.0通过MFC 创建了 对话框 ,然后怎样通过SQL Server 连接到数据库?,第1张

class DBConnection

{

public:

DBConnection(void)

~DBConnection(void)

int OpenConnect(void)

int ExecuteSQL(_bstr_t strCmd)

_RecordsetPtr GetRecondSetPrt()

private:

_ConnectionPtr m_pConnection //链接数据德指针变量

_RecordsetPtr m_pRecordset//指向记录集的指针

_variant_t RecordsAffected//受影响的记录条数

}

DBConnection::DBConnection(void)

{

m_pConnection=NULL

m_pRecordset=NULL

}

DBConnection::~DBConnection(void)

{

m_pConnection=NULL

m_pRecordset=NULL

}

//打开数据库链接

int DBConnection::OpenConnect(void)

{

try

{

//创建连接对象

m_pConnection.CreateInstance("ADODB.Connection")

//设置连接字符串

_bstr_t strConnect ="Provider=SQLOLEDBData Source=20110121-1545\\SQLEXPRESS\

Initial Catalog=ExpManDBUser ID=saPWD=123"

//设置连接超时时间为5秒

m_pConnection->ConnectionTimeout = 5

//连接数据库

m_pConnection->Open(strConnect, "", "", adModeUnknown)

return 1

}

catch(_com_error e)

{

CString errorMsg

errorMsg.Format(_T("连接数据库失败!\r错误信息:%s"),(LPCSTR)e.ErrorMessage())

AfxMessageBox(errorMsg)

return 0

}

}

//返回受影响的记录条数

int DBConnection::ExecuteSQL(_bstr_t strCmd)

{

if(m_pConnection->State)

{

try

{

m_pRecordset.CreateInstance("ADODB.Recordset")//为Recordset对象创建实例

//执行SQL语句,并返回受影响的记录条数

m_pRecordset=m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText)

return RecordsAffected.intVal

}

catch(_com_error &e)

{

AfxMessageBox(e.Description())

return 0

}

}

return 0

}

//返回记录集以便后续使用

_RecordsetPtr DBConnection::GetRecondSetPrt()

{

return m_pRecordset

}

可以像这样使用,strCmd为sql语句

DBConnection dbConnector

if(dbConnector.OpenConnect() == 0)

{

return

}

if(dbConnector.ExecuteSQL((_bstr_t)strCmd) == 0)

{

return

}

当然如果你还需要取出数据的时候可以这样用

_RecordsetPtr pRecordSet

pRecordSet=dbConnector.GetRecondSetPrt()

_variant_t vCardNo

vCardNo = pRecordSet->GetCollect("cardNO")//得到数据表种cardNO字段

后面_variant_t类型就可以转换为int float CString等各种类型了。

如果有什么问题再交流。

cdaodatabase*

m_pdatabase

cdaorecordset*

m_precordset

m_pdatabase=new

cdaodatabase

try

{

m_pdatabase->open("dbstu.mdb")

m_precordset=new

cdaorecordset(m_pdatabase)

}

以上是建立数据库连接和数据集对象,有了m_precordset对象,就可以对数据库进行查询 *** 作。

cstring

strselect(_t("select

*

from

["))

strselect

+=tbstu

strselect

+=

_t("]")

m_precordset->open(dbopendynaset,strselect)

查询stuid:

sql="select

*

from

tbstu

where

stuid="+id

如果stuid是字符串类型的:

sql="select

*

from

tbstu

where

stuid='"+id+"'"

你的数据库是不是放在程序文件一个目录?如果不是修改一下。m_pdatabase->open("dbstu.mdb")

还有在文件头添加:#include

CDatabase类用与和数据库进行连接、断开、插入...的 *** 作。

CRecordSet类用与在数据库中读取数据。

你想向数据库中插入数据,就用CDatabase类就可以了。

SQL语句你知道吗?就是“insert into”什么的。

例如:

CDatabase* m_Database;

//你已经和数据库连接上了是吗?没有的话先连接上。

// m_Database->OpenEx(str, CDatabase::noOdbcDialog));

// str 是数据源。

//然后就向库中插入数据吧!

CString strSQL

strSQL.Format("//一条SQL语句,就是insert into")

m_Database->ExecuteSQL(strSQL)

//这样就OK了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9936085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存