当前位置:首页 » 编程语言 » vcsqlodbc

vcsqlodbc

发布时间: 2023-01-20 16:57:01

sql如何连接odbc数据库,vc怎么连接odbc数据库

建议使用ado来连接,使用odbc比较繁琐的,如下是我精心总结的使用ado连接数据库方法

*******************************************
**********首先是连接Access数据库***********
*******************************************

@@@@@@@以下在VC6.0环境中都能实现@@@@@@@@@@@
================ADO方法:==================
|||||针对Access2003:---->参照实例Ado6666.zip文件
//首先要在文件的头部引入一个动态链接库:
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF") \
rename ("BOF","adoBOF")
//连接指针,实例方法一
_ConnectionPtr pConn(__uuidof(Connection));
//连接指针,实例方法二
_ConnectionPtr pConn; pConn.CreateInstance(__uuidof(Connection));
//对于ADO的连接,要指定一个Provider和一个数据源
//ADO连接Access的Provider是Microsoft.Jet.OLEDB.4.0而数据源就是一个Access文件
Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = ×××.mdb
//调用Open函数打开连接
//Open的第一个参数是连接字符串(ConnectionString),即由Provider和Data Source组成的一个字符串
//第二个和第三个参数是数据源的用户名和密码,如果没有给它们指定,则为空字符串
pConn->Open("","","",adConnectUnspecified);
//打开记录集两种方式
//方式一: 该方式打开一个SQL语句执行的内容,且能够对记录集进行查询、修改、添加和删除
pRset->Open("SELECT * FROM 学生",(_variant_t)((IDispatch*)pConn),adOpenDynamic,adLockOptimistic,adCmdText);
//方式二: 该方式打开一个SQL语句执行的内容,与“方式一”所不同的是,我们只能对其查询
pRset = pConn->Execute("SELECT * FROM 学生",NULL,adCmdText);
//另加说明:还有其他打开方式,如利用_CommandPtr指针对象,也是可以有同样的操作的
//记录集和数据库的练级的关闭
pRset->Close(); //关闭
pRset.Release(); //释放
pRset = NULL; //设其值为NULL,防止到处乱指
pConn->Close(); //关闭
pConn.Release(); //释放
pConn = NULL; //设其值为NULL,防止到处乱指
-------------------------------------------------------------------------------------------
|||||针对Access2007:---->参照实例Ado7777.zip文件
我们知道Access2007文件的后缀名是.accdb,经过测试我们知道,使用Microsoft.Jet.OLEDB.4.0 Provider
已经不能打开数据库,微软给我们提供了一个支持Access2007数据库连接的Provider:Microsoft.ACE.OLEDB.12.0
只是这样还不够,还需要一个数据引擎,我从网上下了一个:AccessDatabaseEngine.exe,安装之后就可以用了。
其他操作和连接Access2003大同小异,没有什么区别。
-------------------------------------------------------------------------------------------
|||||针对SQL Server2005:---->参照实例DBLinkToSS2005.zip文件
对于ADO技术的使用,只要做好连接字符串,其他操作基本相同
对于连接SQL Server2005,主要还是ConnectionString的问题,它的ConnectionString是:
Provider=MSDASQL.1;Password=lanche;Persist Security Info=True;User ID=sa;Data Source=mysqlserver2005ds;Initial Catalog=master
这段代码比较长,不容易记住,但是没有必要,有一种简便的方法,可以准确无误地做好连接字符串的准备
方法如下:
1,向对话框中添加两个ActiveX控件:Microsoft ADO Data Control 6.0(SP6)和Microsoft DataGrid Control 6.0(SP6)
要注意的是,在"Insert Active Control"对话框中还有一个与Microsoft DataGrid Control 6.0类似的控件:DBGrid Control,
千万别加错了!
2,打开Microsoft ADO Data Control 6.0(SP6)控件的属性对话框,在标签控件中选择Control标签,点击"Build",将会弹出一个数据
连接属性对话框,这里有很多种连接,当然我不可能把所有的情况都说一遍,现在我只说说现在我的做法:
【提供程序】选择Microsoft OLEDB DB Provider for ODBC Drivers【连接】选择一个数据源,如我利用
SQL Server Native Client 10.0驱动程序建立了一个名为"mysqlserver2005ds"数据源
3,如果测试连接成功后,即可以得到一个ConnectionString了
-------------------------------------------------------------------------------------------
|||||针对Oracle 11g:---->参照实例DBLinkToSS2005.zip文件
连接Oracle11g的方法和连接SQL Server2005的方法是一样的,在这里我只给出我做的实例的ConnectionString
Provider=MSDASQL.1;Password=lanche;Persist Security Info=True;User ID=system;Data Source=Oracle ODBC for Visual C++
###########################################################################################
备注:
1,其他数据库连接,比如到SQL Server2008(SQL Server2000不必说,因为它已经退出历史舞台),还有Oracle10g,它应该和Oracle11g的连接
方法一样,没什么变化。还有一类数据库,我不想讨论,比如MySQL,DB2等。
2,还有三种连接数据库技术:ODBC,OLE,DAO,这三种方法比较古老,ODBC只是在数据源方面还很有用,至于用它来做数据库开发,是不适宜的;
DAO是建立在OLE之上的一种技术,如今出现了ADO技术,虽说DAO技术在某些方面还是有一些优势,但还是被ADO给淘汰了,据我所知,DAO
已经被淘汰了,目前ADO是使用最广泛也是最便利的技术,所以综合这四种技术,在数据库开发中推荐使用ADO.故不再讨论其他连接技术了。
…………………………………………Summed on by Chengming………………………………………………
……………………………If you have any question,please contact me…………………………………
…………………My QQ number is 1204833748 and my e-mail is [email protected]…………………

⑵ vc程序,SQL数据库,存储过程,错误提示:[Microsoft][ODBC SQL Server Driver]没有执行可选特性,求解

应该是数据库文件 创建的时候没有建立'zy_insert'存储过程,重新创建 这个存储过程试试,或者 干脆找到建数据库的sql脚本重新执行一遍。

⑶ 在VC6中,使用ODBC的SQL语句操作数据库时,如何提交和回滚事务

BEGIN
TRAN
为开始事务
COMMIT
TRAN
为提交事务
ROLLBACK
TRAN
为回滚事务
BeginTrans
启动新的事务,之后任何改变不会立即提交
CommitTrans
保存所有更改并结束当前事务。它也可以启动新事务。
RollbackTrans
取消当前事务中所做的任何更改并结束事务。它也可以启动新事务。

⑷ 如何在VC中嵌入SQL语句,通过ODBC访问SQL Server

环境:WindowsXP ; VC++6.0 + sp5 1。通过odbc直接执行SQL语句CDatabase mydb;CRecordset myRecord;CString strSQL;CDBVariant cv;try{if ( !mydb.IsOpen() )mydb.OpenEx("数据库连接字符串",CDatabase::noOdbcDialog);

⑸ 如何用VC连接SQL数据库!ODBC数据源类型的!!

(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);
}

⑹ vc下用odbc连接mysql

::SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server","DSN=aaa\0 SERVER=(Local)\0

DATABASE=mydb\0\0"); //odbc中添加一个数据源,数据源名称:aaa,本地服务器,数据库名:mydb
try
{
CDatabase m_DbOdbc; //创建数据库对象
m_DbOdbc.OpenEx("DSN=aaa;UID=user;PWD=pa;",CDatabase::noOdbcDialog); //链接并打开数据库
}
catch(CDBException *e)
{
return FALSE;
}

要包含头文件
#include <odbcinst.h>
#include <afxdb.h>

⑺ 怎么用odbc将sql和vc建立联系

在VC下的view——》class wizard——>add class 选择基类为CRecordset,取个子类名字,下一步就是和ODBC建立联系了,按操作提示进行就OK了

⑻ 想用VC6.0连接SQL 2005,需要配置ODBC吗,他们三者之间的关系是怎样的,请各位解答

无需配置,安装完SQL后,系统会自动将SQL加入连接池

⑼ VC SQL Server ODBC创建DSN数据源的问题

如果他的电脑上也有SQL server,也配置ODBC的话,你看一下,在ODBC中测试连接是否成功,然后再考虑是不是程序的问题

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:585
制作脚本网站 发布:2025-10-20 08:17:34 浏览:881
python中的init方法 发布:2025-10-20 08:17:33 浏览:574
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:761
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:677
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1005
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:249
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:108
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:799
python股票数据获取 发布:2025-10-20 07:39:44 浏览:705