VC 中MFC编程连接数据库出错

VC 中MFC编程连接数据库出错,第1张

你没有添加数据源,在ODBC里添加数据源。

要选择相应的驱动程序。我举个例子,你的管理系统的数据库文件是***.mdb 日志文件是 ****.LOG 采用的数据库是SQL2000 ODBC数据源连接。

配置方法:

1.启动数据库SQL 2000 启动服务,将数据库文件添加到数据库中(附加数据库就行)

2.打开ODBC数据源 在用户DSN标签下 添加->选择SQL Server驱动->完成->填上数据库的名称(***)和数据库(Local)->下一步->下一步->更改默认数据库(选择成你要添加的那个)->直接点OK就行了。

连接打开数据库和查询数据库都要加异常捕获代码,因为数据库在连接的时候可能连接不上,就不能进行后面的查询工作,否则就会报错,如果查询一个不存在的表都会出问题,所以要加异常捕获,避免出现错误时程序非法 *** 作,增加代码容错机制。

修改代码见下,运行时可以看看代码提示什么错误,出错原因主要可能是数据库连接不上或查询错误表。

if(!SUCCEEDED(CoInitialize(NULL)))

MessageBox("FAILED")

_ConnectionPtr pConn(__uuidof(Connection)) _RecordsetPtr pRst(__uuidof(Recordset))

pConn->ConnectionString = "Provider=Microsoft.ACE.OLEDB.16.0Data Source=Test.accdbJet OLEDB:Database Password=123Persist Security Info=False"

try{

pConn->Open("","","",-1)

}

catch (_com_error e)

{

AfxMessageBox(e.Description())

return

}

try{

pRst = pConn->Execute("select * from tb_UserInfo", NULL, adCmdText)

while(!pRst->adoEOF)

{

((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("username"))

pRst->MoveNext()

}

}

catch (_com_error e)

{

AfxMessageBox(e.Description())

return

}

pRst->Close()

pConn->Close()

pRst.Release()

pConn.Release()

CoUninitialize()

一般程序中的异常处理是指处理不可预料的异常,通常是由于未考虑到的某个方面导致了某种异常的出现。而异常处理:分为很多种,一般情况下可以用Catch(Exception e)来捕获所有的异常。如果是底层的话,可以throw 出来,让上层调用方法去处理异常。如果要处理直接在catch块中写上处理方法即可。第二种是很详细的处理,把异常分类别捕获,分类别处理。比如类型转换异常、文件读写异常等等,然后为他们分别做不同的异常处理,这也是一般程序的建议处理方式。

而LZ所说的异常,这些对于程序员来说是确定的限制条件而不是异常了。

1. 找不到记录 你应该把你的查询方法返回值写成false,调用时做相关的处理,比如提示用户,不存在记录等等。

2.是主键的字段在你的编辑界面就应该设置为readonly,不让客户直接编辑。

长度这些都是需要你在界面上的读写界面时直接写明白的,比如:你读取一个长度限定字段的TextBox里的值,你的后台应该去if判断下长度,超出了,直接提示用户,而不是等到数据库发现了超出长度再来处理。如果这些都交到数据库处理,会让程序效率低、不容易 *** 作。

2.2关于重名,这里你应该在Save你的记录之前,去select下是不是存在,然后提示用户。


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

原文地址: https://outofmemory.cn/sjk/10705786.html

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

发表评论

登录后才能评论

评论列表(0条)

保存