用VC怎么连接SQL数据库?

用VC怎么连接SQL数据库?,第1张

(1).在文件stdafx.h中最后一个#endif的前一行写入

#import "C:\program files\common files\System\ado\msado15.dll" no_namespace \

rename("EOF","EndOfFile") \

rename("LockTypeEnum","newLockTypeEnum")\

rename("DataTypeEnum","newDataTypeEnum")\

rename("FieldAttributeEnum","newFieldAttributeEnum")\

rename("EditModeEnum","newEditModeEnum")\

rename("RecordStatusEnum","newRecordStatusEnum")\

rename("ParameterDirectionEnum","newParameterDirectionEnum")

如果你的系统不是安装在C盘的话就把#import 后面的C改成系统所有的盘

(2).在C***App类的

public:下加入

_RecordsetPtr m_pADOSet

bool ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)

在private:下加入_ConnectionPtr ADOConn

在class C***App : public CWinApp

{

...

}之后#endif之前加入extern C***App theApp

(3)在BOOL C***App::InitInstance()函数中Enable3dControls()// Call this when linking to MFC statically这一行下面加入

if( FAILED(::CoInitialize(NULL)) )

{

AfxMessageBox("ADO Init failed")

return false

}

try

{

ADOConn.CreateInstance(__uuidof(Connection))

ADOConn->Open("DSN=OBDC数据源Provider=MSDASQL","用户","密码", adConnectUnspecified)//这一行要自已修改

}

catch(_com_error &e)

{

CString err

err.Format("%s", (char*)(e.Description()) )

AfxMessageBox(err)

}

catch(...)

{

AfxMessageBox("Unknown Error...")

}

m_pADOSet.CreateInstance(__uuidof(Recordset))

并在文件最后加上如下代码:

bool C***App::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)

{

if ( ADOSet->State == adStateOpen) ADOSet->Close()

try

{

ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown)

return true

}

catch(_com_error &e)

{

CString err

err.Format("ADO Error: %s",(char*)e.Description())

AfxMessageBox(err)

return false

}

}

最后就可以在登录时执行SQL语句了,比如用户为CString strUser, 密码是CString strPwd数据库表是user_table(user_id, user_name, user_pwd)则

_variant_t strQuery, Holder

strQuery = "select * from user_table where user_name='"+strUser +"' and user_pwd='"+ strPwd +"'"

theApp.ADOExecute(theApp.m_pADOSet, strQuery)

int iCount = theApp.m_pADOSet->GetRecordCount()

if ( 0==iCount )

{

AfxMessageBox(_T("密码错误"), MB_ICONEXCLAMATION)

return

}

else

{

AfxMessageBox(_T("登录成功"), MB_ICONEXCLAMATION)

}

data

source是指数据库所在的服务器地址。

server=localhostuid=testpwd=testdatabase=Northwind

这个就是连接字符串的写法。

要是你比较懒的话就在桌面上建一个文本文档。把文件后缀名改成udl

双击打开。

在提供程序里选一个数据库类型

在连接里第一个写数据库地址。使用指定的id和pass,填完之后勾上允许保存密码。

然后在服务器上选择你要的数据库。

确定

关掉

用记事本打开这个文件。会有这样的东西

[oledb]

Everything

after

this

line

is

an

OLE

DB

initstring

Provider=SQLOLEDB.1Password=testPersist

Security

Info=TrueUser

ID=testInitial

Catalog=NorthwindData

Source=localhost

如果你在程序里指定了数据库类型的话就从Password开始粘贴到最后。没指定就从Provider开始。

VC++环境下连接SQL Server数据库方法指导

思路:

VC访问SQL Server数据库,常用的方法有两种:通过ODBC连接和通过ADO连接。

采用ODBC方式要求先创建ODBC数据源,应用程序通过数据源与数据库连接;并且在创建应用程序时,只能是基于单文档或多文档,而无法直接创建基于对话框的应用程序。

采用ADO方式无需创建数据源,应用程序可通过ADO直接与数据库连接;ADO方式可以创建基于对话框的应用程序。

两种方式都要在应用程序中添加代码以完成相应的初始化功能。

http://wenku.baidu.com/link?url=HUYlEC5kxEmaKVeNSncvhaDEeKDJO20pKpPBr4s5-XoS8_ZP8DdJSTbBeWB0wyZrkhd_CQm4SlUbLh0vmGpgEGXatqUCgG0kV5DGEAgc8gO


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

原文地址:https://54852.com/sjk/6685659.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存