MFC实现SQL数据库ADO连接
mfc sqlserver使用
![mfc sqlserver使用](https://img.taocdn.com/s3/m/8dd02f576d175f0e7cd184254b35eefdc8d315f2.png)
MFC(Microsoft Foundation Classes)是微软提供的一个类库,用于在C++环境下编写应用程序。
而SQL Server是由Microsoft 开发和推广的关系数据库管理系统(RDBMS)。
MFC本身并不直接与SQL Server数据库交互,而是通过ADO (ActiveX Data Objects)或MFC的数据库类(如CDatabase,CRecordset等)来实现与数据库的交互。
如果你想在MFC应用程序中使用SQL Server,你需要做的是:
1. 配置SQL Server数据库:安装SQL Server,创建数据库,配置服务器等。
2. 连接到数据库:使用ADO或MFC的数据库类来连接到你的SQL Server数据库。
3. 执行SQL语句:使用ADO或MFC的数据库类来执行SQL语句,如查询、插入、更新和删除等。
4. 处理结果:获取查询结果,处理异常等。
在MFC应用程序中,你可以使用ADO对象来与SQL Server数据库进行交互。
例如,你可以使用ADO的Connection对象来连接到数据库,使用Command对象来执行SQL语句,使用Recordset对象来获取查询结果等。
另外,你还可以使用MFC的数据库类来与SQL Server数据库进行交互。
例如,你可以使用CDatabase类来打开数据库连接,使用CRecordset类来执行查询并获取结果等。
总的来说,要在MFC应用程序中使用SQL Server数据库,你需要掌握一些关于ADO或MFC的数据库类的知识,并了解如何连接到数据库、执行SQL语句和处理结果等操作。
Visual C++ 6.0连接SQLServer 2005数据库的ADO方法
![Visual C++ 6.0连接SQLServer 2005数据库的ADO方法](https://img.taocdn.com/s3/m/103e0d2f0066f5335a8121e3.png)
(1)Windows环境下,ODBC数据源的配置方法:1)开始→设置→控制面板→管理工具→双击“数据源(ODBC)”。
2)在ODBC数据源管理器中,单击“系统DSN”标签;单击“添加(D)”按钮,并在“列表框”中选择“SQL Server”,然后单击“完成”。
如果已经存在现有的数据源,则选择指定的数据源后,单击“配置”,转向对该数据源进行重新配置。
3)在创建到SQL Server新数据源窗口(如图10-4)中的“名称(M):”右侧,输入:VCSQLServer2005;“描述(D):”右侧,输入:VC SQL Server 2005;“服务器(S):”右侧,输入:指定服务器的位置和名称(通常使用默认服务器,输入一个英文字符半角圆点.)。
图10-4 ODBC数据源设置4)在创建到SQL Server新数据源窗口中,单击“下一步(N)>”,选择“使用网络登录ID的Windows NT验证(W)”或者“使用用户输入登录ID和密码的SQL Server(S)”(默认选择前者),然后单击“下一步(N)>”。
5)在创建到SQL Server新数据源窗口中,勾选“更改默认的数据库为(D):”,并在其下方的下拉列表框中,选择用户连接的默认数据库(本例选择:VcSqlAdoDB),然后单击“下一步(N)>”,再单击“完成”。
6)在ODBC Microsoft SQL Server安装窗口中,单击“测试数据源(T)…”,等待测试成功后,单击“确定”完成数据源配置。
(2)Windows环境下,Visual C++ 6.0连接SQLServer 2005数据库的ADO方法:1)引入ADO库定义文件,初始化COM库使用# import把动态连接库msado15.dll导入Visual C++应用程序,并生成定义ADO库的两个C++头文件:msado15.tlh和ado15.tli。
即:# import "c:Program FilesCommon FilesSystemADOmsado15.dll"no_namespace rename("EOF","EndOfFile")使用CoInitialize ()初始化COM库。
VC++中使用MFC通过ADO连接数据库
![VC++中使用MFC通过ADO连接数据库](https://img.taocdn.com/s3/m/8106e216f18583d04964593d.png)
VC++中使用MFC通过ADO连接数据库VC++中使用MFC通过ADO连接数据库一.让我们看看ADO数据库访问技术使用的基本步骤及方法:1.首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用 #import引用它既可。
可以直接在Stdafx.h文件中加入下面语句来实现:#import "c:/program files/common files/system/ado/msado15.dll"no_namespace rename("EOF", "adoEOF") 【注意,在MFC中路径要用"/"或者"//"】其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。
当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。
#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装方法。
语句no_namespace说明ADO对象不使用命名空间,rename ("EOF", "adoEOF")说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。
2.其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现。
Visual C++ 中使用 ADO、RDO数据绑定
![Visual C++ 中使用 ADO、RDO数据绑定](https://img.taocdn.com/s3/m/3ce26b55ad02de80d4d840a8.png)
Visual C++ 中使用ADO、RDO数据绑定Visual C++ 中使用ADO、RDO数据绑定 (1)在Visual C++ 中使用ADO 数据绑定需要下列步骤: (1)在Visual C++ 中使用ADO 数据绑定 (1)创建使用ADO 数据控件修改数据的应用程序 (2)在Visual C++ 中使用RDO 数据绑定需要下列步骤: (3)在Visual C++ 中使用RDO 数据绑定 (3)创建使用RDO RemoteData 控件修改数据的应用程序 (4)Visual C++ 中使用ADO、RDO数据绑定在Visual C++ 中使用ADO 数据绑定需要下列步骤:添加ADO 数据控件。
指向数据源。
指定记录源(SQL 查询或数据检索语言)。
添加ADO 数据绑定控件。
将数据绑定控件连接到ADO 数据控件。
选择要绑定到ADO 数据控件记录源的字段。
在 Visual C++ 中使用 ADO 数据绑定使用“MFC 应用程序向导”创建MFC 对话框应用程序或MFC Formview 应用程序。
将Microsoft ADO 数据控件添加到对话框;请参见将控件插入Visual C++ 应用程序。
将ADO 数据控件指向OLE DB 数据源。
右击ADO 数据控件,再单击“属性”。
在“控件”选项卡上,单击“使用连接字符串”。
可以使用提供的提供程序也可以删除它。
单击“生成”。
如果从“使用连接字符串”中删除了提供程序,现在可以定义一个。
定义提供程序后,再次访问ADO 数据控件的属性,然后再次选择“生成”继续。
如果在选择“生成”之前在“使用连接字符串”中定义了提供程序,现在可以定义数据链接属性。
这将显示“DataLink 向导”。
如有必要更改“提供程序”,并为提供程序定义适当的“位置”和“数据源”值。
例如,如果使用的是SQL Server 提供程序,则“位置”指定数据库服务器,而“数据源”指定数据库。
如果使用的是ODBC 提供程序,则“数据源”对应于ODBC DSN。
C#ADO方法连接数据库
![C#ADO方法连接数据库](https://img.taocdn.com/s3/m/f8c4f07701f69e31433294cc.png)
用C#动态创建Access数据库记得以前要动态的创建Access数据库的mdb文件都是采用DAO,用VC开发,一大堆的API,很是麻烦。
现在好像也鲜有人提起DAO。
其实动态的创建mdb数据的最简单的方法还是ADOX。
用ADOX创建access数据库方法很简单,只需要new一个Catalog对象,然后调用它的Create 方法就可以了,如下:ADOX.Catalog catalog = new Catalog();catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb;JetOLEDB:Engine Type=5");仅仅两行代码就搞定了。
下来我主要介绍一下在c#中的实现细节。
首先你要添加引用,在“Add reference”对话框里切换到Com页面,选择“Microsoft ADO Ext. 2.8 for DDL and Security”,然后点击OK。
在文件的开头using ADOX名字空间。
然后添加如上面所示的代码就可以成功的创建Access 数据库了,代码如下:using System;usingSystem.Collections.Generic;usingSystem.Text;using ADOX;namespace testADOX{class Program{static void Main(string[] args){ADOX.Catalog catalog = new Catalog();catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb;JetOLEDB:Engine Type=5");}}}创建了数据库文件是没有实际用处的,我们还要创建表。
在创建表之前,我们必须连接目标数据库,用来连接数据的桥梁居然是ADO的Connection对象,所以我们不得不再次添加对ADO的应用,在添加引用对话框中切换到Com页面,选择“Microsoft ActiveX Data Objects 2.8 Library”,然后点击OK。
在MFC中连接SQL数据库的简单方法
![在MFC中连接SQL数据库的简单方法](https://img.taocdn.com/s3/m/85fabb55be23482fb4da4c34.png)
这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。
这里不再具体说了。
这里我们假设我们的数据库名字为Test012、配置数据源数据库设计建立完成后,它只是单独的几张表,我们并不能在程序中去访问它,因为程序并不知道数据库在哪里。
因此,就要在应用程序跟数据库之间建立连接。
配置数据源说通俗了就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。
具体配置步骤为:1)打开控制面板--〉管理工具--〉数据源,在用户DSN面板选择“添加”2)在数据源驱动程序中选择“SQL Server” --〉完成,即打开“创建到SQL Server 的新数据源”3)在“数据源名称”中填入名称,我们填TestSQL01,然后选择服务器,在其中选择要连接到的SQL Server服务器。
(如果你电脑的SQL Server服务打开的话,就会有自己的主机名。
或者选择网络上的某个SQL Server。
4)点击下一步配置认证信息5)配置完后点击下一步,选中“更改默认的数据库为”复选框,在下拉中选择自己刚才建立的要连接的数据库。
(这一步很重要,一般一个Server上会有多个数据库,如果不更改数据源的默认数据库,你建立的数据源将连接到默认的数据库,这样就会造成程序中执行SQL语句时“对象名无效”的错误,即找不到你指定的数据表等)6)选择完数据库后直接下一步--〉完成就完成了数据源的配置。
接下来会出现配置数据源的基本信息,可以通过“测试数据源”来测试数据源是否配置成功。
3、数据库的连接建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了。
1)首先要在程序中引入MFC ODBC数据库的定义文件#include <afxdb.h>2)定义CDataBase数据库对象,CDatabase m_db;3)利用CDataBase类的OpenEx函数建立和数据库的连接;m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);/*这里的TestSQL01 即为步骤2中建立的数据源,然后根据OpenEx函数格式填入参数,主要是用户名、密码之类,这里没有设置,所以就没有*/在完成了上面的步骤后,就可以使用SQL语句对数据库进行操作了。
使用VBA连接SQL数据库获取数据
![使用VBA连接SQL数据库获取数据](https://img.taocdn.com/s3/m/69f4dbb69f3143323968011ca300a6c30c22f197.png)
使用VBA连接SQL数据库获取数据VBA是Visual Basic for Applications的缩写,它是Microsoft Office套件内的一种编程语言。
通过VBA,我们可以在Microsoft Excel、Access等软件中编写代码来进行数据操作和处理。
在VBA中,我们可以使用ADO(ActiveX Data Objects)来连接SQL数据库并获取数据。
ADO是Microsoft的一组COM组件,提供了访问多种数据库的接口和功能。
下面是使用VBA连接SQL数据库获取数据的步骤:1.引入ADO库:2.创建连接对象:在代码中,首先要创建一个ADODB.Connection对象,用于表示与SQL数据库的连接。
可以使用如下代码创建连接对象:```vbaDim conn As New ADODB.Connection```3.打开连接:使用连接对象的Open方法打开与数据库的连接。
需要提供连接字符串,指定数据库的位置、用户名、密码等信息。
具体连接字符串的格式取决于使用的数据库类型和驱动程序。
以下是一个连接MySQL数据库的示例代码:```vbaDim conn As New ADODB.ConnectionDim connStr As Stringconn.Open connStr```4.创建命令对象:```vbacmd.ActiveConnection = conn```5.执行SQL查询:指定要执行的SQL查询,并使用命令对象的Execute方法执行该查询。
以下是一个查询表数据的示例代码:```vbaDim sql As Stringsql = "SELECT * FROM Customers"Dim rs As ADODB.RecordsetSet rs = cmd.Execute(sql)```6.处理返回结果:执行完查询之后,可以通过Recordset对象获取返回的结果。
MFC中使用ADO连接SQL Server 2008 R2
![MFC中使用ADO连接SQL Server 2008 R2](https://img.taocdn.com/s3/m/2973e8720b1c59eef8c7b46a.png)
MFC中使用ADO连接SQL Server 2008 R2一、在工程中添加一个MFC类ADO_Database,当然,你可以定义一个别的类名,只要这个类名是合法的二、在解决方案中找到ADO_Database.h文件,并在这个文件中进行一下步骤:1、在头文件的最开始添加以下代码#import "C:\Program Files\Common Files\System\ado\msado15.dll" \no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")2、在public中//添加一个指向Connection对象的指针_ConnectionPtr m_pConnection;//添加一个指向Recordset对象的指针_RecordsetPtr m_pRecordset;3、在public中//添加三个函数void OnInitADOConn(void);//连接到数据库void ExitConnect(void);//与数据库断开连接_RecordsetPtr GetRecordSet(_bstr_t bstrSQL);//获取数据集三、在解决方案中找到ADO_Database.cpp文件,并在文件中进行以下步骤:1、实现连接数据库方法void ADO_Database::OnInitADOConn(void){//初始化OLE/COM库环境::CoInitialize(NULL);try{//创建connection对象m_pConnection.CreateInstance("ADODB.Connection");//设置SQL Server的连接字符串,其中Initial Catalog为数据库名称,Data Source为//服务器名称,Open函数的第2、3个参数分别为数据库的用户名和密码_bstr_t strConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;InitialCatalog=NetWork_gobang;Data Source=TabbyCat-PC";m_pConnection->Open(strConnect, "Project", "Project", adModeUnknown);}//捕捉异常catch (_com_error e){//显示错误信息AfxMessageBox(e.Description());}}2、实现与数据库断开连接方法void ADO_Database::ExitConnect(void){//关闭记录集和连接if (m_pRecordset != NULL)m_pRecordset->Close();m_pConnection->Close();//释放环境::CoUninitialize();}3、实现获取数据集方法_RecordsetPtr ADO_Database::GetRecordSet(_bstr_t bstrSQL){try{//连接数据库,如果connection对象为空,则重新连接数据库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;}四、调用方法进行数据库操作1、在头文件中引用并声明#include "ADO_Database.h"ADO_Database m_adodatabase;//定义数据库对象2、使用方法实现数据库的连接、操作和关闭m_adodatabase.OnInitADOConn();//连接到数据库CString sql;sql.Format(L"select* from Information");// Information为数据表的名称_RecordsetPtr m_pRecordset;//打开记录集m_pRecordset = m_adodatabase.GetRecordSet((_bstr_t)sql);try{m_pRecordset->AddNew();m_pRecordset->PutCollect("time", (_bstr_t)svtm);//向数据库中添加CString类型的数//据m_pRecordset->PutCollect("id", tcpPackage.id);//向数据库中添加int类型的数据m_pRecordset->Update();m_adodatabase.ExitConnect();//断开与数据库的连接}catch (...){AfxMessageBox(L"写入数据失败!");return;}。
C#中使用ADO—NET连接SQL-Server数据库
![C#中使用ADO—NET连接SQL-Server数据库](https://img.taocdn.com/s3/m/d05dd3debed5b9f3f80f1c20.png)
C#中使用连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法问题描述:假设在数据库中存在以下两张数据表:User表,存放用户的基本信息,基本结构如下所示:UserDepart表,存放用户所拥有的部门(我们假设一个用户拥有多个部门,虽然听起来有点别扭,此处仅作示例,可以理解为一个用户拥有多个职位等等),该表的基本结构如下所示:向数据库中插入一条用户信息的时候,为了保证数据的一致性,必须使用事务的方式“同时”操作User表和UserDepart表。
先将用户姓名写入User表中,再将其所拥有的部门写入UserDepart表中,使用事务机制保证这两步操作要么同时成功,要么同时失败。
问题就出在:第一步操作完成后,我们并不知道该向第二步操作写入的ID_User的值是多少,因为这个值是SQL Server自动生成的。
解决思路:可以借助SELECT IDENT_CURRENT('User') AS ‘NewInsertID’ 来查询最近一次插入User 表的数据的自动编号的值。
程序实现:1 public struct Chaos_TranSQLCmd2 {3 /// <summary>4 /// 一条SQL语句5 /// </summary>6 public string strSQL;78 /// <summary>9 /// 标记该条SQL语句是否需要连接ID_User10 /// </summary>11 public bool bNeedID;12 }131415 public void Chaos_ExecuteSqlTran(List<Chaos_TranSQLCmd> listTranSQLCmd,string strInsertID_SQL)16 {17 using (SqlConnection ChaosSqlConn = new SqlConnection(strSqlConnString))18 {19 SqlCommand ChaosSqlCmd = new SqlCommand();20 ChaosSqlCmd.Connection = ChaosSqlConn;21 ChaosSqlConn.Open();22 SqlTransaction ChaosSqlTran = ChaosSqlConn.BeginTransaction();23 ChaosSqlCmd.Transaction = ChaosSqlTran;2425 try26 {27 string mID_User = "";2829 //先将数据插入User30 mandText = strInsertID_SQL;31 ChaosSqlCmd.ExecuteNonQuery();3233 //再获取ID_User34 DataSet ds = this.ExecAdapter("select IDENT_CURRENT('PT_User') as 'ID'", "T");35 DataTable dt = ds.Tables["T"];36 if (dt.Rows.Count>0)37 {38 mID_User = dt.Rows[0]["ID"].ToString();39 }4041 for (int i = 0; i < listTranSQLCmd.Count; i++)42 {43 //如果队列中的语句需要连接ID,则处理SQL语句后再执行44 string strSQL = "";45 if (listTranSQLCmd[i].bNeedID==true)46 {47 strSQL = string.Format(listTranSQLCmd[i].strSQL, mID_User);48 }49 else50 {51 strSQL = listTranSQLCmd[i].strSQL;52 }5354 mandText = strSQL;55 ChaosSqlCmd.ExecuteNonQuery();56 }5758 //全部成功执行则提交59 mit();60 }61 catch (System.Data.SqlClient.SqlException Ex)62 {63 //发生问题则回滚64 ChaosSqlTran.Rollback();65 throw new Exception(Ex.Message);66 }67 }68 }测试代码如下:1 static void Main(string[] args)2 {3 try4 {5 List<DB_Operation.ChaosDbOprt.Chaos_TranSQLCmd> Chaos_SQLCmdList = new List<DB_Operation.ChaosDbOprt.Chaos_TranSQLCmd>();67 //构造SQL语句向User表中写入数据8 string strSQL = "insert into PT_User (UserName) values ('Lee')";910 //构造SQL语句向UserDepart表写入数据11 for (int i = 0; i < 10; i++)12 {13 DB_Operation.ChaosDbOprt.Chaos_TranSQLCmd nCmd = new DB_Operation.ChaosDbOprt.Chaos_TranSQLCmd();14 if (i==6)15 {16 //构造错误SQL语句,使写入数据库的操作不能成功执行17 nCmd.strSQL = "insert into PT_UserDepart (ID_User,ID_Depart) values ({0}," + "A String which can't be inserted as ID_Depart)";18 }19 else20 {21 //正常SQL语句22 nCmd.strSQL = "insert into PT_UserDepart (ID_User,ID_Depart) values ({0}," + i.ToString() + ")";23 }24 nCmd.bNeedID = true;25 Chaos_SQLCmdList.Add(nCmd);26 }2728 DB_Operation.ChaosDbOprt CDO = new DB_Operation.ChaosDbOprt();29 CDO.Chaos_ExecuteSqlTran(Chaos_SQLCmdList, strSQL);3031 Console.WriteLine("数据写入成功!");32 Console.ReadLine();33 }34 catch (Exception ex)35 {36 Console.WriteLine("Error:\r\n"+ex.Message);37 Console.ReadLine();38 }39 }规范化代码如下:1 #region 实现数据库事务的方法,实现以事务的方式将多条SQL语句同时写入数据库(其中某些语句依赖于第一条语句插入数据库后自动生成的ID)23 public struct Chaos_TranSQLCmd4 {5 /// <summary>6 /// 一条SQL语句,在需要添加ID的地方用"{0}"来代替7 /// 如:INSERT INTO PT_FeeItemDetails(ID_FeeItem,ID_ExamItem) VALUES ({0},005)等8 /// </summary>9 public string strSQL;1011 /// <summary>12 /// 标记该条SQL语句是否需要连接ID13 /// </summary>14 public bool bNeedID;15 }16 /// <summary>17 /// 该函数用于实现以事务的方式将多条SQL语句同时写入数据库(其中某些语句依赖于第一条语句插入数据库后自动生成的ID)18 /// </summary>19 /// <param name="strInsertID_SQL">需要先插入数据库中以产生ID的SQL语句</param>20 /// <param name="strTableName">需要首先插入数据库中以产生ID的数据表的名称,如"PT_FeeItem"等</param>21 /// <param name="listTranSQLCmd">需要连接ID的SQL语句的列表</param>22 public void Chaos_ExecuteSqlTran_InsertID(string strInsertID_SQL,string strTableName, List<Chaos_TranSQLCmd> listTranSQLCmd)23 {24 using (SqlConnection ChaosSqlConn = new SqlConnection(strSqlConnString))25 {26 SqlCommand ChaosSqlCmd = new SqlCommand();27 ChaosSqlCmd.Connection = ChaosSqlConn;28 ChaosSqlConn.Open();29 SqlTransaction ChaosSqlTran = ChaosSqlConn.BeginTransaction();30 ChaosSqlCmd.Transaction = ChaosSqlTran;3132 try33 {34 string m_strID = "";3536 //先将数据插入User37 mandText = strInsertID_SQL;38 ChaosSqlCmd.ExecuteNonQuery();3940 string strSQL_Tmp = string.Format("SELECT IDENT_CURRENT('{0}') as 'ID'",strTableName);41 //再获取ID42 DataSet ds = this.ExecAdapter(strSQL_Tmp, "T");43 DataTable dt = ds.Tables["T"];44 if (dt.Rows.Count>0)45 {46 m_strID = dt.Rows[0]["ID"].ToString();4748 for (int i = 0; i < listTranSQLCmd.Count; i++)49 {50 //如果队列中的语句需要连接ID,则处理SQL语句后再执行51 string strSQL = "";52 if (listTranSQLCmd[i].bNeedID == true)53 {54 strSQL = string.Format(listTranSQLCmd[i].strSQL, m_strID);55 }56 else57 {58 strSQL = listTranSQLCmd[i].strSQL;59 }6061 mandText = strSQL;62 ChaosSqlCmd.ExecuteNonQuery();63 }64 }65 else66 {67 //如果没有正确获取首先插入语句的ID,则回滚68 ChaosSqlTran.Rollback();69 throw new Exception("产生ID语句没有成功执行,后续语句无法继续执行,已回滚!\r\n");70 }717273 //全部成功执行则提交74 mit();75 }76 catch (System.Data.SqlClient.SqlException Ex)77 {78 //发生问题则回滚79 ChaosSqlTran.Rollback();80 throw new Exception(Ex.Message);81 }82 }83 }84 #endregion(注:可编辑下载,若有不当之处,请指正,谢谢!)。
C++使用ADO及访问数据库
![C++使用ADO及访问数据库](https://img.taocdn.com/s3/m/3b72dc0aba1aa8114431d9ab.png)
3-2
void CEx_ADOView::OnInitialUpdate(){ CListView::OnInitialUpdate(); m_pConnection.CreateInstance(__uuidof(Connection)); // 初始化 Connection指针 m_pRecordset.CreateInstance(__uuidof(Recordset)); // 初始化 Recordset指针 m_pCommand.CreateInstance(__uuidof(Command)); // 初始化 Recordset指针 // 连接数据源为"Database Example For VC++" m_pConnection->ConnectionString = "DSN=Database Example For VC++"; m_pConnection->ConnectionTimeout = 30; // 允许连接超时时间,单位 为秒 HRESULT hr = m_pConnection->Open("","","",0); if (hr != S_OK) MessageBox("无法连接指定的数据库!"); // 获取数据表名和字段名 _RecordsetPtr pRstSchema = NULL; // 定义一个记录集指针 pRstSchema = m_pConnection->OpenSchema(adSchemaColumns);// 获取表信 息 // 将表信息显示在列表视图控件中 CListCtrl& m_ListCtrl = GetListCtrl(); CString strHeader[3] = {"序号","TABLE_NAME","COLUMN_NAME"};
MFC实现SQL数据库ADO连接
![MFC实现SQL数据库ADO连接](https://img.taocdn.com/s3/m/90172204a76e58fafbb0030c.png)
VC MFC实现SQL数据库ADO连接(完整版)关于vc6.0中实现ADO SQL数据库连接的文章网上虽然很多,但大多写的很繁琐,对于我们这样的菜鸟来说,还是很希望有一篇简单化的文章的。
希望跟我一样的菜鸟们学得开心!源代码文件链接:/s/1eR9icyY概述:要在一个vc工程中实现数据库的连接,最好的方式是在新建一个用于连接数据库的类比如ADOConn,需要连接数据库的时候将这个类实例化就可以了。
操作:新建一个ADOConn的对象,比如ADOConn ac;。
然后再引用些对象就可以实现相应的操作了。
实践过程:(一)目的:封装一个自己的类。
在vc6.0中新建一个基于对话框的mfc工程,然后点击菜单栏->插入->类(mfc类)。
然后在“类的类型”中选择Generic Class,名称为ADOConn。
此后会在vc左边视窗的“Source Files”中多出一个ADOConn.cpp的文件,在"HeaderFiles"中多出一个“ADOCon.h”的文件。
如果是用VS2013来创建工程的情况:VS2013中添加类:右击myMFC(新建的项目)——添加——类——MFC类。
(二)打开ADOConn.h(即编辑ADOConn类的头文件)(1)在第一行加入(用于vc支持ado连接)#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")//不要命名空间,重命名EOF为adoEOF,rename的意思就是改名了,rename("EOF","adoEOF")将EOF 改名为adoEOF,以免和C语言里的EOF重名。
C+++Builder中使用ADOConnection+和+ADOQuery的使用
![C+++Builder中使用ADOConnection+和+ADOQuery的使用](https://img.taocdn.com/s3/m/987180fb0242a8956bece45a.png)
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select time_enter from zbstat where time_enter > :date_time"); //一定要注意这个date_time是代表的一个日期时间类型的数据
在Button1中写查询代码:
try
{
Query1->Close();
ADOQ->SQL->Text = "select * from Table1 where ProName = '"+Edit1->Text+"'";
Query1->Open();
}
发出错误信息,如果有人试图构建一个明确对象或调用虚函数。
在集成的调试器表达式,调用某些职能(包括隐式转换函数,构造函数,析构函数,重载运算符和内联函数)不支持。贴你具体的代码片段看看你就ADOConnection->Close();就行了.
另外ConnectionString赋值了没有啊?没看见有赋值语句啊.一会DataModule,一会又是DM,代码中到底是哪个?直接设置DataModule->ADOConnection->Connected=false
C++ Builder中使用ADOConnection 和 ADOQuery的使用(原创)C/C++ 2010-11-01 08:54:39 阅读34 评论0 字号:大中小 订阅
VC++ADO连接数据库操作.wps
![VC++ADO连接数据库操作.wps](https://img.taocdn.com/s3/m/8d44b78e50e79b89680203d8ce2f0066f5336418.png)
VC++ ADO连接数据库操作(1)、引入ADO类#import "c:/program files/common files/system/ado/msado15.dll" /no_namespace /rename ("EOF", "adoEOF")(2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);CoUnInitialize();(3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr 1.连接和关闭数据库(1)连接例子:连接ACCESS数据库AfxOleInit();//初始化HRESULT hr;try{hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象if(SUCCEEDED(hr)){m_pConnection->ConnectionTimeout = 0;hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库m_pCommand.CreateInstance(__uuidof(Command));m_pCommand->CommandTimeout = 5;m_pCommand->ActiveConnection = m_pConnection;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}(2)、关闭//如果数据库连接有效if( m_pConnection->State )m_pConnection->Close();m_pConnection = NULL;(3)、设置连接时间//设置连接时间-----------------------------------pConnection->put_ConnectionTimeout(long(5));2.打开一个结果集(1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误。
如何在VBA中操作数据库连接和 SQL查询
![如何在VBA中操作数据库连接和 SQL查询](https://img.taocdn.com/s3/m/f7763db59f3143323968011ca300a6c30c22f11b.png)
如何在VBA中操作数据库连接和 SQL查询VBA是一种强大的编程语言,可以在Excel和其他Microsoft Office应用程序中实现自动化和定制功能。
在VBA中,你可以使用ADO(ActiveX Data Objects)来连接数据库,并执行各种SQL查询和数据操作。
本文将详细介绍如何在VBA中操作数据库连接和执行SQL查询。
首先,我们需要在VBA中添加对ADO库的引用。
在VBA编辑器中,选择“工具”→“引用”,然后勾选“Microsoft ActiveX Data Objects x.x Library”。
这将允许我们在代码中使用ADO对象和方法。
接下来,我们需要使用ADO对象来建立数据库连接。
在VBA中,使用ADODB.Connection对象来表示数据库连接。
下面是一个建立连接的基本代码示例:```vbaDim conn As ADODB.ConnectionSet conn = New ADODB.Connectionconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\YourDatabase.accdb;"conn.Open```在这个示例中,我们使用Microsoft ACE OLEDB提供程序连接到一个Access数据库(.accdb文件)。
你可以根据需要修改连接字符串来连接到其他类型的数据库。
连接字符串包含了数据库的提供程序、数据源和其他连接选项。
一旦连接建立成功,我们就可以执行各种SQL查询和数据操作。
在VBA中,我们使用ADODB.Recordset对象来表示查询结果集。
下面是一个示例代码,演示如何执行一个简单的SELECT查询:```vbaDim rs As ADODB.RecordsetSet rs = New ADODB.Recordsetrs.Open "SELECT * FROM TableName", connIf Not rs.EOF ThenDo While Not rs.EOF'处理每一行数据'例如:将数据输出到Excel工作表中Cells(row, column).Value = rs.Fields("FieldName").Valuers.MoveNextLoopEnd Ifrs.CloseSet rs = Nothing```在这个示例中,我们使用rs.Open方法执行了一个SELECT查询,并将结果集存储在rs对象中。
MFC和ACCESS数据库的连接
![MFC和ACCESS数据库的连接](https://img.taocdn.com/s3/m/aa0d4420a5e9856a5612603c.png)
MFC和ACCESS数据库的连接(C_Answers团队开发学生信息管理系统所用)1.通常在应用类(APP类)中进行数据库的连接。
(不在dialog类中,,因为要在出现对话框前已经建立好数据库的连接)第一步:数据库操作准备1)导入ADO动态链接库。
在stdafx.h中。
在工程的stdafx.h中加入如下语句:#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")这一句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会我们声称msado15.tlh和msado15.tl两个C++头文件来定义ADO库。
即加载ADO动态连接库。
其中no_namespace表明不使用命名空间,rename("EOF","adoEOF")表明把ADO中用到的EOF改为adoEOF,防止命名冲突。
注意:改代码需要在一行中完成,如果写成两行或者多行,末行要加上"\"符号,表示把这几行看成一行。
2)初始化OLE/COM环境,在应用类(app)的lnitlnstance成员函数中。
方法:在应用类的lnitlnstance成员函数中,添加AfxOlenit函数(在退出应用时,该函数也将负责COM资源的释放)BOOL CMy13App::InitInstance(){AfxEnableControlContainer();//添加的初始化OLE/COM环境代码if(!AfxOleInit()){AfxMessageBox("初始化OLE DLL失败!");return FALSE;}第二步:连接数据库1)先在APP头文件中声明一个connection指针。
在VBA中操作SQL数据库的方法和技巧
![在VBA中操作SQL数据库的方法和技巧](https://img.taocdn.com/s3/m/76bedad150e79b89680203d8ce2f0066f4336441.png)
在VBA中操作SQL数据库的方法和技巧VBA(Visual Basic for Applications)是一种编程语言,用于开发Microsoft Office应用程序的自定义宏和脚本。
它提供了一种强大的工具,用于操作SQL数据库。
在本文中,我们将探讨在VBA中操作SQL数据库的一些方法和技巧。
首先,我们需要使用ADO(ActiveX Data Objects)库来连接和操作数据库。
ADO是一种用于访问数据源的COM组件,它允许我们在VBA中与SQL数据库进行通信。
连接数据库是使用VBA操作SQL数据库的第一步。
我们可以使用ADODB.Connection对象来建立与数据库的连接。
以下是一个连接到SQL Server数据库的示例:```vbaDim conn As ObjectSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = "Provider=SQLOLEDB;DataSource=server_name;Initial Catalog=database_name;UserID=user_id;Password=password;"conn.Open```在上面的示例中,我们首先创建了一个ADODB.Connection对象,并设置了用于连接数据库的连接字符串。
连接字符串的具体格式取决于所使用的数据库类型和连接信息。
然后,我们通过调用conn.Open方法打开数据库连接。
接下来,我们可以使用mand对象执行SQL查询和操作数据库。
以下是一个执行SELECT查询并将结果返回到Excel工作表的示例:```vbaDim cmd As ObjectSet cmd = CreateObject("mand")cmd.ActiveConnection = connmandText = "SELECT * FROM table_name"mandType = 1 ' adCmdTextDim rs As ObjectSet rs = cmd.ExecuteSheet1.Range("A1").CopyFromRecordset rs```在上面的示例中,我们创建了一个mand对象,并设置其ActiveConnection属性为之前创建的数据库连接。
VS2010MFC中ADO方式连接SQL Server2008学习心得
![VS2010MFC中ADO方式连接SQL Server2008学习心得](https://img.taocdn.com/s3/m/3ce01d9151e79b896802269b.png)
1,连接数据库:这个也是在网上有各种各样的方法,包括直接连接或者用DNS连接,大家多去试试肯定会有一种能行,这里说我的:比如我的程序名叫ma的一个对话框,那么在Cmaapp里面的initialize函数里面添加:BOOL CmaApp::InitInstance(){// 如¨?果?一°?个?运?行D在¨² Windows XP 上¦?的Ì?应®|用®?程¨¬序¨°清?单Ì£¤指?定¡§要°a// 使º1用®? ComCtl32.dll 版ã?本À? 6 或¨°更¨¹高?版ã?本À?来¤¡ä启?用®?可¨¦视º¨®化¡¥方¤?式º?,ê?//则¨°需¨¨要°a InitCommonControl sEx()。
¡ê否¤?则¨°,ê?将?无T法¤¡§创ä¡ä建¡§窗ä¡ã口¨²。
¡êINITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将?它¨¹设¦¨¨置?为a包㨹括¤¡§所¨´有®D要°a在¨²应®|用®?程¨¬序¨°中D使º1用®?的Ì?// 公?共2控?件t类¤¨¤。
MFC中使用ado方式读取excel表格的内容
![MFC中使用ado方式读取excel表格的内容](https://img.taocdn.com/s3/m/ebc8e400657d27284b73f242336c1eb91a37333a.png)
MFC中使用ado方式读取excel表格的内容在MFC中利用ADO的方式连接excel表格,和连接access数据库很相似,只不过在一些连接语句上有细微的差别,但是就是由于这些差别,可能就是怎么样都连接不了.1.在stdaxf.h中加入对ado的支持,即:#import"C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")2.建立连接对象:_ConnectionPtr m_pConnection并初始化m_pConnection.CreateInstance(__uuidof(Connection));连接语句:(我的操作环境是VC++和win7)"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\副本1月14日总装车间扭矩检测表.xls;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\""其中“IMEX=1”若是你的excel表格比较复杂,比如一列中既有文本又有公式数字,那就一定要加上它,加上它以后在读取excel表格数据时不会改变内容,全部按文本格式读取,要不然会出现读文本读不了数字和读数字读不了文本的情况m_pConnectionExcel.CreateInstance(__uuidof(Connection));CString strCon;// CString m_fn=_T("E:\\text.xls");strCon.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\text.xls;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"");try{m_pConnectionExcel->Open((_bstr_t)strCon,"","",adModeU nknown);}catch(_com_error e){CString strError;strError.Format("警告:打开链接发生异常。
SQL的种ASP连接方法
![SQL的种ASP连接方法](https://img.taocdn.com/s3/m/21017ebcf605cc1755270722192e453611665b42.png)
SQL的种ASP连接方法SQL数据库与ASP网页的连接是ASP开发中非常重要的一环,它可以实现前后端数据交互、数据库的增删改查等功能。
下面是SQL的11种ASP连接方法。
1. 使用ADO(ActiveX Data Objects)连接:ADO是Microsoft提供的一种面向对象的数据库访问接口,可以通过其连接数据库。
使用ADO连接数据库可以通过创建连接对象、命令对象和记录集对象实现。
2. 使用ODBC(Open Database Connectivity)连接:ODBC是用于连接数据库的一种通用的API(应用程序接口),使用ODBC连接数据库可以通过建立数据源和数据源连接实现。
3. 使用OLE DB(Object Linking and Embedding Database)连接:OLE DB是Microsoft的一种通用数据库访问接口,可以通过OLE DB连接数据库实现数据的增删改查等操作。
4. 使用OLE DB Provider for SQL Server连接:OLE DB Provider for SQL Server是一种特殊的OLE DB提供程序,专门用于连接SQL Server数据库。
可以使用其连接字符串来连接SQL Server数据库。
5.使用ODBC数据源连接:可以通过配置ODBC数据源(如DSN)来连接数据库。
然后,在ASP代码中使用该数据源进行数据库连接。
6. 使用DSN-less连接:DSN-less连接是指在连接字符串中直接指定数据库驱动程序的路径、数据库服务器的IP地址、数据库名称等信息,以实现数据库的连接。
7.使用连接字符串连接:连接字符串是一种包含数据库连接信息的字符串,通过该字符串可以连接到指定的数据库。
连接字符串中包括了数据库类型、服务器地址、用户名、密码等必要信息。
8. 使用Windows身份验证连接:Windows身份验证是指使用当前Windows登录的用户身份来进行数据库连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC MFC实现SQL数据库ADO连接(完整版)关于vc6.0中实现ADO SQL数据库连接的文章网上虽然很多,但大多写的很繁琐,对于我们这样的菜鸟来说,还是很希望有一篇简单化的文章的。
希望跟我一样的菜鸟们学得开心!
源代码文件链接:
概述:
要在一个vc工程中实现数据库的连接,最好的方式是在新建一个用于连接数据库的类比如ADOConn,需要连接数据库的时候将这个类实例化就可以了。
操作:新建一个ADOConn的对象,比如ADOConn ac;。
然后再引用些对象就可以实现相应的操作了。
实践过程:
(一)目的:封装一个自己的类。
在vc6.0中新建一个基于对话框的mfc工程,然后点击菜单栏->插入->类(mfc类)。
然后在“类的类型”中选择Generic Class,名称为ADOConn。
此后会在vc左边视窗的“Source Files”中多出一个ADOConn.cpp的文件,在"Header
Files"中多出一个“ADOCon.h”的文件。
如果是用VS2013来创建工程的情况:
VS2013中添加类:
右击myMFC(新建的项目)——添加——类——MFC类。
(二)打开ADOConn.h(即编辑ADOConn类的头文件)
(1)在第一行加入(用于vc支持ado连接)
这句话意味使用msado15.dll动态连接库文件,里面就有ADO.
如果存在问题:用VS2010的C++导入ADO导入不了,提示无法打开源文件msado15.tlh”的问题。
解决办法很简单:
在生成菜单--- 重新生成 --- 即可。
原因是:
当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵LoadTypeLib()。
#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID 等进行声明,创建一系列包装方法。
在没有经过编译器编译之前,文件还没有生成,所以,会出现错误提示。
(2)在class ADOConn类体中添加如下代码
至此ADOConn.h的操作完成。
(三)打开ADOConn.cpp(逐个实现其头文件ADOConn.h中定义但末实现的方法),将如下代码拷入文件末尾。
这段代码涉及到获取数据库连接中会出现的异常,并进行处理,不用过于深究其作用,等数据库连接成功后再慢慢研究。
此段代码中有些地方要根据自己数据库的配置情况,进行适当的改动。
需要改动的代码为:
如:
Provider不用改,Server是服务器的名称,怎么查看呢?
打开sql managementstudio连接进行后在左边的“对象资源管理器”中会看到服务器的名称。
我的叫DESKTOP-80T6JHL; Database是要连接到的数据库名称。
比如我在management studio中新建了一个数据库table1; uid=登陆服务器的用户名;pwd=这个用户名的密码,我的密码是123456;到这里就完成了此段代码的修改了。
(四) 保存以上文件。
即完成了sql ado连接类ADOConn的编辑。
比如我要在telbookDlg.cpp中需要连接到数据库,只需要引用如下代码:
到此,实现ado sql数据库的功能。
知识点补充:
要插入数据可以调用下面的语句:
其他说明:判断数据库连接是否成功的函数:
详解MFC使用ADO连接SQLServer数据库
VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。
一、ADO概述
ADO是Microsoft为最新和最强大的数据访问范例OLE DB 而设计的,是一个便于使用的应用程序层接口。
ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。
二、在VC中使用ADO接口技术
1、引入ADO库文件
使用ADO前必须在工程的stdafx.h头文件里的顶头引入ADO库文件,以使编译器能正确编译。
用#import引入ADO库文件
这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF 改名为adoEOF。
现在不需添加另外的头文件,就可以使用ADO接口了。
2、初始化OLE/COM库环境
必须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM 库环境。
在MFC应用程序里,一个比较好的方法是在应用程序主类的:OnInitADOConn成员函数里初始化OLE/COM库环境。
(详细代码见上边的例子)
3、ADO接口简介
ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
_ConnectionPtr接口返回一个记录集或一个空指针。
通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。
使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。
对于要返回记录的操作通常用_RecordsetPtr 来实现。
而用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordsetPtr时不需要。
_CommandPtr接口返回一个记录集。
它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr 接口里直接使用连接串。
如果你只执行一次或几次数据访问操作,后者是比较好的选择。
但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,
然后使用_CommandPtr接口执行存储过程和SQL语句。
_RecordsetPtr是一个记录集对象。
与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。
同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。
如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr 接口,然后使用_RecordsetPtr执行存储过程和SQL语句。
4、使用_ConnectionPtr接口
_ConnectionPtr主要是一个连接接口,取得与数据库的连接。
它的连接字符串可以是自己直接写,也可以指向一个ODBC DSN。
剩下部分资料,见:
好吧,直接来个例子吧:
//使用时注意代码中我的说明!!因为要修改一些内容!因为每个人登录数据库的登录信息,链接的数据库名均不一样,所以要修改!!。