




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编写数据库应用程序必看强烈推荐/article/doc/200309/20030917134414.htm第一节 ODBC API 一、简介现在最流行的联接数据源的方法,是ODBC(Open Database ConnectivityAPI),字面意思是“打开数据库联接”,这是一种用C/C+ 编的应用程序接口,是属于Windows 的一部分。无论对任何一种客户/ 服务器关系型数据库接口(RDBMS), 还是目前最流行的索引顺序访问方法(ISAM)数据库(Jet,Foxpro)以及电子表格,都能找到ODBC驱动程序。使用ODBC数据源的一个最有利的优点是,只要利用ODBC联接上数据库,那么,不论何种数据库,在应用程序内的处理方法都是相同的,这就为设计大型通用数据库处理程序,提供了现实的保证。ODBC是由Windows 的动态链接库(DLL) 组成的,内部提供了一系列的函数,它由两组函数组成,提供基本的数据库服务:1) 添加、配置和删除ODBC数据源:数据源是对数据库的有名联接,数据源的名字是由数据库的提供者命名的,通常称为数据源名(DSN) ,注意把数据源的名字和数据库的名字区别开来。ODBC使用Odbcinst.dll库来配置和删除数据源。而它的可执行的程序,是Odbc32.exe。它的图标位于“控制面板”窗口中(ODBC数据管理器)。2) 管理从客户前端到数据库服务器的查询语句和其它SQL 语句的通讯,并返回查询结果。数据源的ODBC驱动程序将客户端送来的SQL 语句送到数据库驱动程序,数据库驱动程序处理SQL 语句后,再通过数据源的ODBC驱动程序将结果返回到应用程序。事实上,连接数据原有两种方式,一种是直接调用数据表名(Table),这种方法是把所有的表内容全部传给客户端,当表很大时,将是一种效率很差的传输方式。第二种是使用SQL 语句,它只把符合要求的内容传递下去,因此应用效率比较高,大型数据库一般都采用SQL 语句的方式。下面简单介绍一下ODBC 驱动程序。ODBC驱动程序分为单层和多层两种:单层的ODBC不能直接处理SQL 语言,它是将SQL 语句分解成一系列长的低级指令,直接操作数据库文件(Dbase、Foxpro、Paradox、Excel)。多层ODBC依靠客户/服务器RDBMS来处理SQL 语句,由于服务器只传回符合SQL 条件的内容,网络流量被最小化。VB 6.0中包括SQL server 4.2X 、6.X、7.0 的32位ODBC驱动程序,即Sqlsvr32.dll,虽然列表上同样也包括Qracle 驱动程序。但是,实际使用时还是需要在客户端计算机上安装Qracle公司提供的动态联接库。二、ODBC添加新数据源方法:Windows -控制面板 -资源管理器(Windows 2000为管理工具) -ODBC数据源(32位)。打开“ODBC数据管理器”这里首先要决定的是采用“用户DSN”还是“系统DSN”用户DSN: 该数据源名只提供给用该用户名登陆的用户。在网络使用时主要用于在客户端定义数据源。系统DSN: 该数据源名提供给用任何用户名登陆的用户,包括在网络上(NT)使用。添加:选择驱动程序。1)选择Access,-完成 安装:数据源名:自己给出数据库 “选择”-选择相应的数据库。确定: 我们可以在数据源列表中看到新定义的数据源名字。2)选择SQL Server -完成 建立新的数据源到SQL Server命名数据源:自己给出服务器:给出服务器名如果从列表中选择服务器名称,则不需要更多的配置。如果使用相同的计算机作为 SQL Server,可以在此服务器框中输入“(local)”(本地)。然后用户可连接到 SQL Server 的本地副本,即便正在运行 SQL Server 的非网络版本。在说明框可以写进关于数据源可选的描述性说明。例如,“所有员工的工资和销售情况”。下一步使用用户登陆ID和密码的SQL Server验证输入用户名和密码下一步 -完成配置可以看出,不同的驱动程序配置方法不尽相同。后面就可以看到,使用ODBC数据源名并不是唯一的选择,我们也可以使用直接用数据库名或者服务器名(SQL Server) 联接的方式,这时,并不需要事先设置ODBC数据源的名字。第二节 DAO 和 ADO 的技术状态1994年,微软在Access 2.0 中首先引入了16位的DAO (Data Accessing Object 数据访问对象),以实现和Jet 数据库引擎的连接,这是允许程序员操纵Jet 引擎的第一个面向对象的接口。DAO 提供了一个复杂的可编程数据对象的层次模型,由上到下分别是:DBEngineWorkspaceDatabaseTableDefQueryDefRecorsetDAO 的使用非常复杂,例如,为了引用 Recorset,必须从上到下逐级引用:DIM wname As DAO.WorkspaceDIM wm1 As DAO.DatabaseDIM wm2 As DAO. TableDefDIM wm3 As DAO.QueryDefDIM wm4 As DAO.Recorsetset wname=DBEngine.Workspace(0).更重要的,DAO/Jet 并不适合客户/服务器模式的数据库系统,于是,微软又开发出了RDO(Remote Data Object 远程数据对象), 和RDC 控件(在MS RemoteData Control 6.0下),解决了客户/服务器模式下,开发象SQL Server 或 Oracle 这些大型远程数据库的困难。VB提供的RDO 组件在工程-引用:客户端:MS Remote Data Object 2.0服务器端:MS Remote Data Servers 2.5 Library和MS Remote Data Servers Server 2.5 Library显然,这种模式需要编写服务器端程序,在某些情况下可能是不现实的。继RDO 之后,微软又提出了全新的ADO 技术(ActiveX Data Object),ADO 是DAO 和RDO 的继承者,它基于微软提出来的OLE DB 数据访问模式,它可以处理目前几乎全部关系型数据库和非关系型数据库系统。而且,它是专门为大范围的商业数据库系统设计的,ADO 比DAO 占用内存少,所以它更适合大流量和大事务量的网络计算机系统。ADO 的影响很大,现在几乎所有的非微软开发环境都内置了ADO 驱动程序。ADO 的使用也相当方便,利用ADODC 控件(在MS ADO Data Control 6.0(OLEDB)下),可以在本地计算机上获取本地和远程的数据源,并且可以立刻测试联接是否成功。ADODC 控件,是以ADO 为父类的一个子类,所以,它继承了ADO 的几乎绝大多数属性事件和方法,同时,也加入了自己的属性事件和方法。这些属性事件和方法,又大多数套用于一种原来基于DAO 的控件Data,为熟悉Data控件的程序员做一个合理的过渡,并且,加入了和数据绑定控件连接的内容。所以,同一种目的,在ADODC 中可以有两种方式解决,这样做的好处是给程序员带来了方便,更重要的,ADODC 和数据绑定控件连接非常方便,但代价是无疑降低了效率。因此,尽管使用ADODC 控件处理数据库问题相当方便,但是,在更多的大型数据库系统的设计中,人们还是使用直接调用ADO 类的方式,因为这样一来,程序的效率往往更高,更灵活。鉴于这个情况,在下面的讨论中,我们两种情况都进行讨论,具体怎么用,要看项目的需要。当然首先是从源头说起,先研究ADO 。还需要说明的是:ADODC 提供了一整套的自动联接方式,这些方式,十分方便,但是,如果不明白原理,往往联接以后还是感到自己心中无数,所以,即使您使用ADODC ,但是仔细的研究ADO 本身的东西,也还是很有必要的。同时,利用ADODC 提供的信息,也给以编程为主的ADO提供了方便,这些我们后面都会加以介绍。最近一两年,ADO 技术又有了长足的发展,这里首先要提到微软的Visual Studio.Net 平台,在这个平台上的主导语言是Visual Basic,Visual C+,Visual C# ,对于VB 6.0的编程人员,过渡到VB.NET是理所当然的事情。微软公司对VB升级到VB.Net的同时,对数据访问模型进行了翻天覆地的升级。把原来的ADO 模型升级为全新的ADO.NET数据源,原来最重要的RecordSet 现在消失了,取而代之的是DataSet 和DataReader,而且不再像原来RecordSet 那样一次只读取一条记录,而是读取整个数据库,然后在内存中建立一个映像,从而实现了断开方式数据库连接和内存管理自动化,这是微软的一个重大的技术突破。但是,这并不等于说学习ADO 技术就没有意义了,首先,由于技术的继承性,ADO.NET 继承了ADO 的大部分编程方法,另一方面,VB.NET也还是保留了原来在VB 6.0中ADO 的COM 组件,这就是说,在VB.Net中,我们还是可以用在VB 6.0中完全相同的方法来编写数据库程序,这对于中小规模的数据库管理系统,也是很有意义的。如果您主要是处理Access数据库,那么使用专为Access数据库编写的DAO 技术将更直接效率更高。因此,在VB.Net中也仍然保留了DAO 的COM 组件,但是,更改了驱动程序,解决了在VB 6.0中DAO 不能驱动Access 2000 的问题,因此也得到了广泛的应用。下面,我们就来仔细的研究ADO 和DAO 的有关问题。在课程的最后,我们将通过一两个例子,来说明VB.NET中数据库处理的一些方法和特点。 第三节 ADO 最基本的内容ADO 的内容比较多,我想还是分两个层,先讨论最基本最重要的内容。一、ADO 组件的引用 ADO 实际上是个COM 组件,它的顶层有三个对象:Connection :指定数据源,建立和数据源的连接;Command :对数据源执行指定的命令,接受SQL 语句,表名,存储过程的名字,执行SQL 查询,更新数据,插入记录等;Recordset: 来自表或命令执行结果的记录全集,操纵来自提供者的几乎所有数据。要应用ADO 组件,必须在工程-引用:Ms Activex data object 2.7 Library把ADO 这个COM 组件调入当前系统。用F2 可以看到这个组件的状况。库的名字为ADODB,也就是在当初设计组件的时候,工程名起的是是ADODB,所以,应用这三个类都要构造相应的实例,引用时必须作如下声明,:Dim Cnn As ADODB.ConnectionDim Cmm As ADODB.CommandDim Reco As ADODB.Recordset其中,Cnn,Cmm和Reco 是用户自定义的对象变量,为了表述方便,后面的讨论我们都以这组名字作为表达的基础。 真正使用,就要通过New 来建立一个ADO 的实例。Set Cnn = New ADODB.ConnectionSet Cmm = New ADODB.CommandSet Reco = New ADODB.Recordset有时,希望定义的同时构造实例,也可以写成(ADODB一般可以不写):Dim Cnn As New ConnectionDim Cmm As New CommandDim Reco As New Recordset值得指出的是,如果您直接使用ADODC控件,那上述方法都已经在ADODC内部完成了,不需要程序员自己来写。但是,如果您不使用ADODC控件,而要使用ADO 这个类来编写数据库系统的时候,就需要使用引用COM 的标准方法。一、数据库连接的建立可以有四种连接方式:第一种(用Open)Cnn.Provider = 驱动程序Cnn.Open 数据库名,用户名,密码 例Cnn.Provider = Microsoft.Jet.OLEDB.4.0Cnn.Open Add.path & 奖金数据库.mdb 这里App.path给出了当前路径(该语句在VB.NET中变为Application.startuppath),这样就可以实现相对路径调用数据库了。 第二种(用连接字符串)Connection对象变量有一个Connectionstring,可以输入字符串,例如对于sql server数据库,字符串设置可用如下规则:Provider=SQLOLEDB.1; (提供者)Integrated Security=SSPI; (安全设置)Persist Security Info=False; (持续的安全信息)Initial Catalog=pubs; (初始的目录,或默认的数据库)Data Source=XXX-PE (数据源-计算机名)请看如下的例子:Cnn.DefaultDatabase=pubs 这个属性是指定默认数据库,如果没有指定数据库名,就使用这里指定的数据库名,SQL Server通常是pubsCnn.Connectionstring=driver=SQL Server;Server=bigs; _uld=sa;pws=pwd其中:bigs为服务器名;sa为用户名;pwd为密码。Cnn.Mode=adModeShareExclusive以独占方式打开(后面会讨论)Cnn.open第三种(使用DSN 数据源名)Cnn.Connectionstring=DSN=pubs;UID=*;PWD=* 由于建立DSN 时就已经提供了诸如上面有关的各种数据,所以这里只需要直接调用名字就可以了。Cnn.open第四种(直接用Open打开)Cnn.Open DSN数据源名,用户名,密码实例,第一部分,建立三个数据库的连接:-建立三个Button,分别用三种方法打开三个库,运行时不出错就代表已连接。由于后面要用一个显示画面,所以一次只能打开一个数据库,看看这里是怎么解决这个问题的?-Dim Cnn As New ConnectionDim Cmm As New CommandDim Reco As New RecordsetDim Cnn1 As New ConnectionDim Cnn2 As New ConnectionDim Kzr, Kzc, kzc1, kzc2, Nd, inname, TnamePrivate Sub Command2_Click()用字符串连接SQL SERVER 数据库If Kzc = True Then Cnn.CloseKzc = TrueIf kzc1 = True ThenCnn1.Closekzc1 = FalseEnd IfIf kzc2 = True ThenCnn2.Closekzc2 = FalseEnd IfCnn.ConnectionString = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=XXX-PE注意一下计算机名要更改Cnn.OpenEnd SubPrivate Sub Command1_Click()打开数据库的Provider+Open方法If kzc1 = True Then Cnn1.Closekzc1 = TrueIf Kzc = True ThenCnn.CloseKzc = FalseEnd IfIf kzc2 = True ThenCnn2.Closekzc2 = FalseEnd IfCnn1.Provider = Microsoft.Jet.OLEDB.4.0inname = App.Path & 奖金数据库.mdbCnn1.Open innameTname = 奖金End SubPrivate Sub Command3_Click()直接使用OPEN 和DSN数据源打开数据库If kzc2 = True Then Cnn2.Closekzc2 = TrueIf Kzc = True ThenCnn.CloseKzc = FalseEnd IfIf kzc1 = True ThenCnn1.Closekzc1 = FalseEnd IfCnn2.Open MysqlEnd SubPrivate Sub Form_Load()Kzr = FalseKzc = Falsekzc1 = Falsekzc2 = FalseEnd Sub-二、应用Recordset打开表前面已经提到,Recordset对象是用于处理来自表或命令执行结果的记录全集,操纵来自提供者的几乎所有数据,所以,处理数据库问题,Recordset是处在重中之重的位置,由于这是个COM 对象,应用的时候同样需要声明,并且构造一个实例:Dim Reco As ADODB.RecordsetSet Reco = New ADODB.RecordsetReco.Open 数据源, Cnn ,指针形态,锁定方式其中:数据源:表名,或者SQL语句指针形态:0 向后指针(默认)1 索引键集3 动态记录(常用)4 静态记录锁定方式:1 只读(默认) 2 编辑更新3 Updata更新4 批次更新实例:关于Recordset的打开-在相应的按钮事件中加上Reco.Open-Private Sub Command2_Click().Tname = employeeReco.Open Tname, Cnn, 3, 3双向指针,Updata更新Kzr = TrueEnd SubPrivate Sub Command1_Click().Tname = 奖金Reco.Open Tname, Cnn1, 3, 3Kzr = TrueEnd SubPrivate Sub Command3_Click().Tname = 基本表Reco.Open Tname, Cnn2, 3, 3Kzr = TrueEnd Sub-三、几个重要的Connection对象方法1)open方法语法:Cnn.Open Connectionstring,UserID,password注意:Connection的Open方法是连接了数据库,但并没有打开表。2)Close方法Cnn.Close关闭已经打开的连接,但该对象还保留在内存中3)清除内存Set Cnn=Noting真正的消除掉四、取得记录集中的数据Reco.(字段名)Reco.Fields(index).Value 内容Reco.Fields(index).Name 字段名Reco.Fields(index).type 字段类型Reco.Fields(i).ActualSize 字段长度Reco.Fields.Count 字段总数记录数Reco.RecordCount 记录数N=Reco.AbsolutePosition 当前指针的位置Reco.AbsolutePosition=N 把指针定位在第N笔记录上五、指针的移动Reco.MoveFirst 指针指向第一笔记录Reco.MoveNext 指针指向下一笔记录Reco.MovePrevious 指针指向上一笔记录Reco.MoveLast 指针指向最后一笔记录-做一个frame用于显示,内部放置9个Textbox和Label数组。开始的时候frame1.visible=false。VarType()检测数据库输出是否为空(MULL),因为空数据的送出会显示错误信息,应避免这种情况。Showfiel()用于显示数据Myscreen()用于设置初始屏幕 -Private Sub Showfiel()For i = 0 To Nd - 1If VarType(Reco.Fields(i).Value) 1 ThenText1(i).Text = Reco.Fields(i).ValueElseText1(i).Text = End IfNextEnd SubPrivate Sub Myscreen()Nd = Reco.Fields.CountIf Nd = 9 ThenNd = 9End IfFor i = 0 To 8Label1(i).Visible = FalseText1(i).Visible = FalseNextFor i = 0 To Nd - 1Label1(i).Caption = Reco.Fields(i).NameLabel1(i).Visible = TrueText1(i).Visible = TrueNextReco.MoveFirstLabel2.Visible = Falseframe1.visible=trueEnd Sub 在三个打开数据库的开关事件中都写上: Myscreen Showfiel第一个Private Sub Command4_Click()Reco.MoveFirstShowfielEnd Sub上一个Private Sub Command5_Click()Reco.MovePreviousIf Reco.BOF ThenReco.MoveFirstEnd IfShowfielEnd Sub下一个Private Sub Command6_Click()Reco.MoveNextIf Reco.EOF ThenReco.MoveLastEnd IfShowfielEnd Sub末一个Private Sub Command7_Click()Reco.MoveLastShowfielEnd Sub-六、Recordst重要的方法:AddNew 创建一个新记录UpData 保存对当前数据的修改Delete 删除当前记录Requery 用新的SQL 查询去更新当前数据集。 -增加几个功能-增加Private Sub Command13_Click()Reco.AddNewShowfielEnd Sub删除Private Sub Command14_Click()Reco.DeleteReco.MoveNextIf Reco.EOF ThenReco.MoveLastEnd IfShowfielEnd Sub更新Private Sub Command15_Click()Reco.Fields(i).Type = 3为自动加一的字段ID,不能更新For i = 0 To Nd - 1If (Trim(LTrim(Text1(i).Text) ) And (Reco.Fields(i).Type 3) ThenReco.Fields(i).Value = Text1(i).TextEnd IfNextReco.UpdateEnd Sub-七、执行SQL 语句执行SQL 语句是为了构造数据集,可以用两种方法:1)用Connection的Execute方法完成查询后以记录集的形式把数据传回,这在数据编修的时候,需要传回修改以后的记录集的时候用得比较多。语法:Set Reco=Cnn.Execute(命令文字,影响记录的笔数,选择)“影响记录的笔数”指的是执行Execute方法以后,数据库被修改的笔数,对SELECT 该数值无效。“选择”指的是“命令文字”的意义,说明如下:adCmdText 数据源将传入的“文字定义”视为命令文字,比如SQL 语句。adCmdTable 数据源将传入的“文字定义”视为表名称。adCmdStoredProc 数据源将传入的“文字定义”视为存储过程,适用于SQL Server。adCmdUnknown 数据源不知道“文字定义”的类型,将自动检测,可以是SQL 语句,但是自动监测将会降低效率,此为默认值。2)用Recordset的Open方法语法Reco.Open SQL语句,Cnn,指针形态,锁定方式-做一个数据查询的Frame,打开表的时候让frame2.visible=true放入一个Textbox(Text3)为写入SQL 语言用,一个按钮执行查询,另一个按钮用于把当前表的名字加入。-Private Sub Command9_Click()If Kzc ThenReco.CloseReco.Open Text2.Text, Cnn, 3ElseIf kzc1 ThenReco.CloseReco.Open Text2.Text, Cnn1, 3ElseIf kzc2 ThenReco.CloseReco.Open Text2.Text, Cnn2, 3End IfEnd SubPrivate Sub Command12_Click()Text2.SelText = Tname + Text2.SetFocusEnd SubPrivate Sub Command9_Click()If Kzc ThenReco.CloseReco.Open Text3.Text, Cnn, 3, 3ElseIf kzc1 ThenReco.CloseReco.Open Text3.Text, Cnn1, 3, 3ElseIf kzc2 ThenReco.CloseReco.Open Text3.Text, Cnn2, 3, 3End IfShowfielEnd Sub-八、Recordset查询和过滤Reco.Find 条件把指针定位在符合条件的记录上Reco.filter = 条件只显示符合条件的记录,注意,筛选掉的数据并没有删除,只是暂时隐蔽,一旦筛选条件移除,又自动恢复原状,筛选移除的方法:Reco.filter = 由于条件是文本的形式,所以构造条件相当的方便。条件表达式除了、=、=、 AND、 OR、 NOT、 XOR以外,更有一种Like ,用于处理文字类型,使用统配符(*或%),可以实现部分匹配查询。注意两点:第一点是查询表达式需要用引号时,要改成单引号。第二点是统配符必须在结尾存在:比如: 客户名称 LIKE 龙* 或 客户名称 LIKE *龙* 是正确的。而 客户名称 LIKE 龙* 是错误的。虽然SQL 和Recordset可能有相似的查询功能,但本质是不同的,SQL是在服务器端处理,把查询的结果传入,所以更适合构造数据集。而Recordset查询是在客户端,并不影响数据集的本身,所以速度更快,也更加精细,所更适合做精细的数据处理。-在实验程序中增加功能-Find查询Private Sub Command8_Click()Reco.Find Text2.TextIf Reco.EOF() ThenMsgBox 没有这个数据Reco.MoveFirstEnd IfShowfielEnd Sub下一个Private Sub Command8_Click()Reco.Find Text2.TextIf Reco.EOF() ThenMsgBox 没有这个数据Reco.MoveFirstEnd IfShowfielEnd Sub过滤Private Sub Command16_Click()Reco.Filter = Text2.TextShowfielEnd Sub-九、分页设置每页为N 笔Reco.PageSize=N总页数为NN=Reco.PageCount设定记录指针指向的页数Reco.AbsolutePage=N取得指针指向的页数N=Reco.AbsolutePage例:输出某页中的记录:Reco.AbsolutePage=2for i=1 to Reco.pagesizeif Reco.Eof then Exit forend if-处理-Next十、Recordst属性Bof和Eof分别指示指针指向头以前和尾以后。结果为true和false-下面我们设法让构造查询条件变得更方便。加入两个List和一个Combo1,list1的style属性选1-Checkbox为多选型list2的list属性加入常用的SQL命令单词,再加入一个“字段送出按钮”。Myscreen子程序增加一些List和ComboBox处理的程序,在打开数据库时,把相应字段名显示出来,便于组织条件的时候使用。 所以要加入一个新的过程MyscreenSQL,是因为查询以后可能字段数目要发生变化,ComboBox要显示新的字段值,但List却希望显示原来的字段值,便于重新组织查询。-给Myscreen增加相应的语句Private Sub Myscreen()Nd = Reco.Fields.CountIf Nd = 9 ThenNd = 9End IfFor i = 0 To 8Label1(i).Visible = FalseText1(i).Visible = FalseNextFor i = 0 To Nd - 1Label1(i).Caption = Reco.Fields(i).NameLabel1(i).Visible = TrueText1(i).Visible = TrueNextReco.MoveFirstLabel2.Visible = FalseList1.ClearCombo1.ClearFor i = 0 To Reco.Fields.Count - 1List1.AddItem Reco.Fields(i).NameCombo1.AddItem Reco.Fields(i).NameNextCombo1.Text = Combo1.List(0) Frame2.Visible = TrueEnd Sub做一个MyscreenSQL过程,为SQL语言发送用Private Sub MyscreenSQL()Nd = Reco.Fields.CountIf Nd = 9 ThenNd = 9End IfFor i = 0 To 8Label1(i).Visible = FalseText1(i).Visible = FalseNextFor i = 0 To Nd - 1Label1(i).Caption = Reco.Fields(i).NameLabel1(i).Visible = TrueText1(i).Visible = TrueNextReco.MoveFirstCombo1.ClearFor i = 0 To Reco.Fields.Count - 1Combo1.AddItem Reco.Fields(i).NameNextCombo1.Text = Combo1.List(0)End Sub送出字段名Private Sub Combo1_Click()Text2.SelText = Combo1.TextText2.SetFocusEnd Sub送出选中的字段列表Private Sub Command10_Click()Dim i, stList1.Selected(i) = True为选中st = For i = 0 To List1.ListCount - 1If List1.Selected(i) = True ThenIf st = Thenst = List1.List(i)Elsest = st + , + List1.List(i)End IfEnd IfNextText2.SelText = st + Text2.SetFocusEnd Sub双击list2送出选中的SQL命令Private Sub List2_DblClick()Text2.SelText = List2.Text + Text2.SetFocusEnd Sub- 好啦,一个完整的数据库处理程序完成了,最后注意,退出程序,在VB 6.0中是 Unload Me,相应的,在VB.Net 变成了Application.Exit()。怎么样,很有意思吧?十一、ADO 的Command对象Command对象主要用于查询数据库,并返回Recordset对象中的记录。常用属性:1)CommandText:设置返回命令,包括SQL,表格,存储过程。如果是SQL 语句,CommandText的后面要跟上Execute方法。例如:Cmm.CommandText=SQL 语句Cmm.Execute2)CommandType属性:指示如何计算CommandText的值,主要有如下几种选择:adCmdText 数据源将传入的“文字定义”视为命令文字,比如SQL 语句。adCmdTable 数据源将传入的“文字定义”视为表名称。adCmdStoredProc 数据源将传入的“文字定义”视为存储过程,适用于SQL Server。adCmdUnknown 数据源不知道“文字定义”的类型,将自动检测,可以是SQL 语句,但是自动监测将会降低效率,此为默认值。这个属性在很多地方需要设置。十二、实例:用户名和密码申请机制第四节 ADODC 控件ADODC 是VB提供的一个基于ADO 模型的控件,调用它需要:工程-部件-MS ADO Data Control 6.0(OLEDB)。一、连接数据源:属性:Connectionstring1,使用ODBC数据源:如果有可以选择,如没有可以新建,新建的方法与在Windows下一样。选择好数据源以后,应该能看到:Connectionstring=DSN=*2, 使用连接字符串:连接字符串包括了驱动程序, 可以利用文件名调用,完成后要注意测试一下连接。从效果上看,和数据源是一样的,但可以避免每台客户机上重复设置。Comma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 情商口才课件
- 兴义市第八中学2026届高一化学第一学期期中质量跟踪监视试题含解析
- 活动方案策划稿
- 2026届浙江省杭州市江南实验学校高三化学第一学期期末达标测试试题含解析
- 怎么写食品安全活动方案
- 泡沫雕塑面试题及答案
- 小学汉字之谜社团活动方案
- 军事投弹考试题及答案
- 化学考核面试题及答案
- 家电公司配送管理规定
- 煤矿安全规程新旧版本对照表格版
- 私募薪酬管理办法
- 2025年急诊三基考试题库及答案
- 2025贵州航空产业城集团股份有限公司旗下子公司贵州安立航空材料有限公司招聘61人笔试历年参考题库附带答案详解
- 军人休假规定管理办法
- 2025秋人教版英语八年级上Unit 2 全单元听力材料文本及翻译
- DB11-T 1455-2025 电动汽车充电基础设施规划设计标准
- 2025北京初二(上)期末英语汇编:阅读单选CD篇
- 2025年公招教师特岗教师招聘考试教育公共基础知识真题(带答案)
- 2025年贵州省中考英语真题含答案
- 消除医疗歧视培训
评论
0/150
提交评论