精华内容
下载资源
问答
  • VB与MATLAB接口的实现 实例说明 在本实例中我们制作一个能够与Matlab进行交互的应用程序程序运行结果如图78-1所示 图78-1 运行结果 技术要点 引用Matlab库 执行Matlab命令 结束Matlab 实现过程 新建项目 打开Visual ...
  • 【PC】自制QQ机器人(python+VB6)

    千次阅读 多人点赞 2019-08-28 17:21:43
    目前网上的那些QQ机器人都需要下载什么...VB6:1.定时获取QQ消息,也就是对方说了什么。2.定时发送来自python处理好的回答(txt文件格式)。3.对获取的QQ消息分析,既不能是对方上次发的消息(已经处理完并发送)也...

    目前网上的那些QQ机器人都需要下载什么什么软件,我想自己弄个QQ机器人,所有有了想法就去实现。
    实现方法:

    首先要先说明一下:两种语言要怎么沟通呢?
    我一开始也寻思着,后来发现txt文档可以,不过比较慢。

    主要思路:
    VB6:1.定时获取QQ消息,也就是对方说了什么。2.定时发送来自python处理好的回答(txt文件格式)。3.对获取的QQ消息分析,既不能是对方上次发的消息(已经处理完并发送)也不能是自己发给对方的消息。分析完成后保存到一个txt文件夹,好传送到python中去。

    python:1.接受来自VB6处理好的消息并发送给机器人,让机器人回复消息并保存为txt文档以便 VB6发送


    由于VB6会一直循环检测来自QQ的消息,所以会有消息重复获取的情况
    因此需要判断获取的这个消息是否处理完毕。
    如果只有对方发送的消息:
    在这里插入图片描述
    就像这样,那么VB6就只会获取到“你好”,
    这个时候VB6就会判断这个消息是否和上一次消息一样,
    如果一样就不执行代码,(但在第一次获取这个消息的时候就会执行(因为第一次获取就是和第一次的上一次不一样))
    在这里插入图片描述
    这是执行了代码(也就是回复这条消息)

    之后就是是这样:
    在这里插入图片描述
    就机器人回复只有这个,但是对方不回复,很重要
    如果对方一直不回答,那么VB6是不是一直检测到的就是这句话“在的”
    这样的话程序就不会回复,要不然自己获取了之前发自己消息还以为这是对方发的消息然后就自己回复自己啦


    具体步骤
    第一步:用python确定发送给对方的内容。
    python人工智能我不会,所以只能找网上的图灵接口,还真有,直接用python爬取数据或者发送数据到几口就有返回值了,返回值就是你要回复的话。保存为txt文件(这里需要两个txt文件都储存着这个数据。为什么:VB6重要用掉其中一个,下面会说)

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓这是我找到的图灵机器人(如果你会人工智能的话就简单啦,直接python调用)
    机器人
    第二步:发送来自python机器人的消息

    先来分析一下PCQQ也就是这样了
    就是这个样子。然后我们看看有个输入框,其实发送消息就直接用VB6就行了

    AppActivate "对方或群聊QQ名字" 
    SendKeys Text1.Text
    SendKeys "%s"
    
    • 第一行代码就是选中窗体
    • 第二行输出语句,也就是打字到QQ消息框里,打字的内容可以更改
    • 第三行快捷键发送

    好了发送已经做好了,接下来我们要拦截 获取对方发送了什么消息

    首先先来看看QQ,一般可以解释聊天窗口有很多控件
    根据VB是不是可以按一下tab

    然后我们就试试在这里插入图片描述
    发现没有,有一条虚线在那里,然后我们发现就可以选择文字复制粘贴了

    我们直接用VB6把所有文字都复制下来,

    SendKeys "^c"
    

    也就是ctrl+c复制
    继续,用VB6获取剪辑版的文字

    dim a
    a = Clipboard.GetText
    

    Clipboard.GetText这个就是剪切板的内容啦
    然后再用VB6处理这些文字,就只用获取最后一行

    Dim A As String
    Dim FSO As Object
    Dim FSO_File As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FSO_File = FSO.OpenTextFile(App.path & "/1.txt", 1, False) '读取文件而不创建
    Do While Not FSO_File.AtEndOfStream
    A = FSO_File.ReadLine '获取最后一行
    Loop
    FSO_File.Close
    

    就如你所见,我是先弄到txt文档在读取最后一行。
    这里的A就是QQ最后接受的消息啦,
    不过不要忘记,这也可能是你发送的消息
    所以我们接下来还要进行一波判定
    判定这个A消息是否和之前处理过的消息以及你发的消息一样
    如果不一样的话就可以输出到python
    然后有新回复VB6又会检测到,发送。
    就这样一个循环过程。

    展开全文
  • vb接口的实现

    千次阅读 2013-12-29 18:36:19
    '什么是回调函数?回调函数就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就 '是你的这个回调函数名。回调函数与普通的函数没有什么区别,其之所以称之为回调函数,是因为这个函数 '作为...
    '什么是回调函数?回调函数就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就
    
    '是你的这个回调函数名。回调函数与普通的函数没有什么区别,其之所以称之为回调函数,是因为这个函数
    '作为另外一个函数的参数,比如有以下两个函数 CallFun是回调函数, MainFun是调用回调函数的函数
    'Private Sub CallFun(i as Integer)
    '
    'End Sub
    'Private Sub MainFun(CallFun, i As Integer)
    '    CallFun i
    'End Sub
    '不幸的是VB中不能将函数作为参数,利用上面的代码是不可行的。下面我将介绍可行的办法。
    '首先让我们理解一下 Implements 语句
    '语法 Implements [InterfaceName | Class]
    '所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。
    '说明:
    '所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多
    '个接口的所有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一
    '个缺省接口。在 Visual Basic 中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。
    '当 Visual Basic 类实现接口时,都会提供该接口的类型库中说明的所有 Public 过程的版本。除了提供接口原型与自编过程之间的
    '映射关系之外,Implements 语句还使这个类接收对指定接口 ID 的 COM QueryInterface 调用。
    '看了说明是不是还是一头雾水,好的,下面让笔者用实际的例子演示一下相信各位看官就会明白的了。
    '1.首先我们新建一个标准工程,然后在这个标准工作添加 类模块,然后把类模块的名字改为 InterFace ,意为 接口类, 根据接口定义
    '我们在这个类模块中添加函数原形(所谓接口就是代表接口封装的成员(方法以及属性)的原型集合),即是说接口只是声明一了个原形,
    '而不必有实现,可谓原形,比如一个函数原形如下:
    'Private Sub CallFun(i as Integer)
    '
    'End Sub
    '所谓实现如下:
    'Private Sub CallFun(i as Integer)
    '   msgbox i
    'End Sub


    'InterFace 类模块的代码如下:
    'Public Sub CallFun(i as Integer)
    '
    'End Sub


    '接着我们添加一个实现这个接口的类,首先添加一个类模块,把名字改为Func1
    '添加以下代码:
    'Implements InterFace
    '这一句的意思即是说这个类是要实现InterFace接口的
    '然后点击Implements InterFace上面的列表框,是不是看到了一个InterFace的项(如图1所示),我们选择这个项看看会有什么效果
    '是不是自动添加了如下代码
    'Private Sub InterFace_CallFun(i As Integer)
    '
    'End Sub
    '然后我们可以在这个InterFace_CallFun函数中写我们想写的实现代码,我就写一句 msgbox i 代码吧,如下所示
    'Implements InterFace
    'Private Sub InterFace_CallFun(i As Integer)
    '    MsgBox i
    'End Sub


    '然后我们在Form1的代码区中实现MainFun函数,如下
    Private Sub MainFun(Fun As InterFace, i As Integer)
        Print "随便写的代码"
        Print "随便写的代码"
        Print "随便写的代码"
        Fun.CallFun i
       Print "随便写的代码"
    End Sub
    '接着在Form1的Click事件中调用MainFun函数,如下代码所示


    Private Sub Form_Click()
        MainFun New Func1, 10
        '好的,如果我们想把i的值等于99时再Msgbox出来如何是好呢?是不是得回去修改Func1类的,这当然不,而是继续添加另外一个类
        '模块,把名字改为Func2, 添加以下代码
        'Implements InterFace
        'Private Sub InterFace_CallFun(i As Integer)
        '    If i = 99 Then
        '        MsgBox i
        '    End If
        'End Sub
        '好的,我们现在调用一下看看
        MainFun New Func2, 88  '这句没有满足条件没有显示结果
        MainFun New Func2, 99  '这句满足了条件从而显示了结果
    End Sub


    '本教程是一个简单的例程,如果各位看官有不明白之处请提问,本文有谬误之处亦请指出,谢谢!
    展开全文
  • 针对VB和MATLAB接口编程问题,本文提出一种基于COM组件的VB与MATLAB接 甘编程方法。并以具体的例子给出了这种方法的应用过程,实现了VB可视化界面和MATLAB信号分析及图形显示。
  •  VB.net中,对象可以有一个或多个接口。所有对象都有一个主接口或本地接口接口由用Public声明的方法、属性、事件、字段。    除本地接口外,对象还可以使用Implements来实现辅助接口。  ...


    向美术教师交作业时,一位学生只交了一张白纸。 
    老师问:”画呢?” 
    学生答:”这儿?”他指着白纸说。 
    老师:”你画的是什么?” 
    学生:”牛吃草。” 
    老师:”草呢?” 
    学生:”牛吃光了。” 
    老师:”牛呢?” 
    学生:”草吃光了,牛还站在那里干什么?”





    一、抽象基类

        

           正如有个好爹可以少奋斗二十一样,父类本身是非常有用的,可以进行实例化,也可以不能实例化,做个样子,好处很大。


          1、MustInheit

           基类可实例化,但也可以不实例化(或者禁止创建该类的对象),这时,只能创建子类,以及子类的对象。

           可以用MustInherit来指明该基类不能创建对象。

           注意:这不表示不能声明基类(如下例Person)类型的变量,只是不能用New Peron来创建对象。

                       同时在这个时候,我们还可继续使用共享办法(因为它只属于类,不属于对象)


        

           2、MustOveride

           指明只能由子类重写的方法(sub,funciton,property),此类方法只有方法头,而无具体的实现代码。因此不能创建对象。

           故:  类中含有MustOveride时,此类必须由MustInherit进行声明。即:

           只能在属性和过程声明语句中使用 MustOverride。 指定 MustOverride 的属性或过程必须是类的成员,并且该类必须标

           记为 MustInherit。       

    Public MustInherit Class Person '只能被继承
        Private mName As String
        Private mBirthDate As Date
        Private mID As String
    
        Public Event NameChanged(ByVal newName As String)
        Public Event DataChanged(ByVal field As String, ByVal newValue As Object)
    
        Public MustOverride Function LifeExpectancy() As Integer '无实现代码,只能被子类重写
    
        '......
    
    End Class
            上面声明Mustoveride的函数LifeExpectancy只有方法头,无实现代码,此类方法也称“抽象方法”或“纯虚拟函数”
           

             任何继承此类的子类,必须重写这些抽象方法,否则将产生语法错误,子类也不会编译。

              故在子类中添加:

    '=======子类Employee中重写基类的纯虚函数===============
        Public Overrides Function LifeExpectancy() As Integer
            Return 90
        End Function

             


              3、抽象基类

               MustInherit及MustOverride同时出现该类时,此类被称为抽象基类。或者说:含有抽象方法的类叫抽象基类。


               抽象基类很有用,可以前期只架上抽象基类这个架子,每个子类根据自己情况进行重写适合自己的方法。


              注意的是,此时子类都必须有抽象方法的实现代码,否则出错。

    Public MustInherit Class AbstractBaseClass
        Public MustOverride Sub DoSomething()
        Public MustOverride Sub DoOtherSomething()
    End Class
    
    '接口
    Public Interface IAbstractBaseClass
        Sub DoSomething()
        Sub DoOtherSomething()
    End Interface

             某些方面,抽象基类与Interface接口概念相似,上面接口IAbstractBaseClass,在实现这接口的类中也必须有其内两个方法

             的实现代码,否则一样也会出错。




            4、禁止继承

             上面是“只能继承”中创建对象。

             下面是“禁止继承”,用NotIneritable来说明此类,不准再进行继承,到此为止!

    Public NotInheritable Class officeEmployee '指定基不再做基类(即不再向下派生)
    
                不能被继承的类有时被称为“密封”类








    二、多接口

            

           接口,如同外交家一样,可以与外界进行交流。

           VB.net中,对象可以有一个或多个接口。所有对象都有一个主接口或本地接口,接口由用Public声明的方法、属性、事件、字段。

           

           除本地接口外,对象还可以使用Implements来实现辅助接口。



         1、对象接口

          类中除Private声明的外都可作本地接口。例:

        '方法作为接口
        Public Sub AMethod()
    
        End Sub
    
        '属性作为接口
        Public Property AProperty() As String
    
        End Property
    
        'Event事件作接口
        Public Event AEvent()
    
        '变量作接口
        Public AInteger As Integer

             注意:上面无实现代码,因为接口只在于架子的声明,其内的实现代码并不是接口的一部分。这是重要的区别!

                          因为将接口与实现代码区分是面向对象程序设计的核心内容。


            使用本地接口

            一旦声明了本地接口,就可在对象中用这些接口与外界产生交流。下面类中Pulbic方法,其对象就可直接用它与外界发生联系。

    '============类的本地接口=========
    Public Class TheClass
        Public Sub DoSomething()
           '.....
        End Sub
    
        Public Sub DoOtherSomething()
          '.......
        End Sub
    End Class
    
     '==========主程序中使用这两个接口========
            Dim myObject As New TheClass
            myObject.DoSomething()
            myObject.DoOtherSomething()





            2、辅助接口

             在设计上,只有同类的对象才有相同的本地接口,这有很大的限制。

              如果把一组不同的对象,它们本地接口各不同,处理起来就麻烦了。

              比如,对于产品 、顾客、发票三类对象,不具有自然的继承关系,但是,我们需要打印这三个信息,于是,

             产生了另一个概念“辅助接口”,也就平时说的接口,通过这个接口,使三者均可打印。


             接口Interface是同Class,Modul一样是同一级别的概念,它象抽象方法一样并不具有实现代码,实现代码都在使用接口

             的类中。这样使用接口时,不必管是不是同一类型对象,均可正常运行。


            (1)定义接口

               用Interface来定义一个接口,通过添加模块方式,在模块外部添加接口代码:

    Public Interface IPrintableObject '接口定义(与Class,Module平级)内部作用域相同
        Function Label(ByVal index As Integer) As String '故其前无Public,friend等限定
        Function Value(ByVal index As Integer) As String
        ReadOnly Property Count() As Integer
    End Interface
    
    Module Interfaces
    
    End Module

                接口定义包含在 Interface 和 End Interface 语句内。 

                在 Interface 语句后面,可以选择添加列出一个或多个被继承接口的 Inherits 语句。  即接口可以继承。


                在声明中,Inherits 语句必须出现在除注释外的所有其他语句之前。 

                接口定义中其余的语句应该包括 Event、Sub、Function、Property、Interface、Class、Structure 和 Enum 语句。 

                接口不能包含任何实现代码或与实现代码关联的语句,如 End Sub 或 End Property。


                在命名空间中,默认情况下,接口语句为 Friend,但也可以显式声明为 Public 或 Friend。

                在类、模块、接口和结构中定义的接口默认为 Public,但也可以显式声明为 Public、Friend、Protected 或 Private。

                Shadows 关键字可应用于所有界面成员。 Overloads 关键字可应用于界面定义中声明的 Sub、Function 和 Property 语句。

                此外,Property 语句可以具有 Default、ReadOnly 或 WriteOnly 修饰符。 不允许使用任何其他修饰符:Public、Private、

               Friend、Protected、Shared、Overrides、MustOverride 或 Overridable。



               接口是一个数据类型,类似于类或结构(Struction)。因为可以这样定义这个类型的变量:

        Private printable As IPrintableObject
    

                但上面,都没有实现的代码,实现代码都是在类中实现。所以接口是不能直接用New的。



             


               (2)使用接口

                 用户只须知道接口,不必了解对象内部细节,就可以使用不同的对象。

                

                 窗体中添加方法:

        Public Sub PrintObject(obj As IPrintableObject)  '窗体内添加例程
            Dim index As Integer
    
            For index = 0 To obj.Count
                Debug.Write(obj.Label(index) & ": ")
                Debug.WriteLine(obj.Value(index))
            Next
        End Sub

               然后窗体中添加按钮,并添加代码:

    Private Sub ButtonPrint_Click(sender As Object,e As EventArgs) Handles ButtonPrint.Click
        Dim obj As New Employee()
    
        obj.EmployeeNumber = 123
        obj.BirthDate = #1/1/1980#
        obj.HireDate = #1/1/1996#
        PrintObject(obj)
    End Sub

             点击运行,会提示错误:因为接口只是方法头或事件头,并没有具体的实现代码。因此还要在类中添加实现的代码。    

       




             (3)实现接口

               任何类(除抽象基类)都可以使用Implements来实现接口。

               因为接口要用类的对象来传递,使得接口最后言之有物。而抽象基类是不能产生对象的,所以抽象基类是不能有接口的。


                加入Implements回车后,会自动把接口各方法或事件的架子添加到类中,我们只须在内加入实现代码。

                

                类中实现的方法、属性等名称,并不重要,重要的是参数的数据类型及返回值必须与接口定义的类型相匹配。

                实现代码如下:

    '================Employee类中实现接口(连接到外部接口类型上)=========
        Implements IPrintableObject '这里按回车后,自动添加Iprintableobject成员,来实现细节
    
        '为接口准备或要使用的字段
        Private mLabels() As String = {"ID", "Age", "HireDate"}
        Private mBirthDate As Date
        Private mSalary As Double
    
        Public ReadOnly Property Count As Integer Implements IPrintableObject.Count
            Get
                Return UBound(mLabels)
            End Get
        End Property
    
        Private Function Label(index As Integer) As String Implements IPrintableObject.Label
            Return mLabels(index)
        End Function
    
        Public Function Value(index As Integer) As String Implements IPrintableObject.Value
            Select Case index
                Case 0
                    Return CStr(EmployeeNumber)
                Case 1
                    Return CStr(Age)
                Case Else
                    Return Format(HireDate, "Short date")
            End Select
        End Function

             注意:可以看到实现方法等的后面有Implements IPrintableObject.Label,这类似于Handles,它也可以通过用逗号把

                         一个接口的多个方法联系到一个方法中,或者多个接口的方法联系到一个方法中。

                       (实际上就是把函数地址与外界联系了起来,这样使用这个地址,自然就调用了不同对象中的方法)



                看一下整个接口的示意图:






              (4)重用 通用的实现代码

                辅助接口,可以有几个,几个中可以同一个方法,这个方法就成了通用的方法。

                下面两个接口有方法都联系到同一个方法Value(类Employe中)

    '=========接口1,有Value=================
    Public Interface IPrintableObject
        Function Label(ByVal index As Integer) As String
        Function Value(ByVal index As Integer) As String
        ReadOnly Property Count() As Integer
    End Interface
    
    '========接口2,有GetValue===============
    Public Interface IVales
        Function GetValue(ByVal index As Integer) As String
    End Interface
    
    
    '=======Employee中两接口,同时关联到Value函数上(函数签名与上面相同参数)===========
        Implements IPrintableObject
        Implements IVales
    
        Public Function Value(index As Integer) As String Implements IPrintableObject.Value, IVales.GetValue
            Select Case index
                Case 0
                    Return CStr(EmployeeNumber)
                Case 1
                    Return CStr(Age)
                Case Else
                    Return Format(HireDate, "Short date")
            End Select
        End Function

              可以看到,其后用逗号表示,两个接口都用到Value方法。




             (5)合并接口、继承

              可以同时合并辅助接口和继承在。

               当从一个实现接口的类继承时,新的子类自动获得的接口和基类的实现代码。

               如果指定基类方法可以重写,则子类可以重写这些方法。

               不仅重写基类主接口的实现代码,而且也可以重写接口的实现代码。

    Public Overridable Function Value(ByVal index As Integer) As String  Implements IPrintableObject.Value, IValues.GetValue
               上面表示这个接口实现,是可以被重写的。

               

              完整定义如下:

        Public Overridable Function Value(index As Integer) As String Implements IPrintableObject.Value, IVales.GetValue
            Select Case index
                Case 0
                    Return CStr(EmployeeNumber)
                Case 1
                    Return CStr(Age)
                Case Else
                    Return Format(HireDate, "Short date")
            End Select
        End Function

              注意:由于上面是Public,因此它在主接口(本地接口)中也是有效的。

                         并且它还是两个接口中的一部分,意味着可以被三种方式访问。


                三种 方式访问:

            Dim emp As New Employee("Andy")
            Dim printable As IPrintableObject = emp
            Dim values As IVales = emp
    
            Debug.WriteLine(emp.Value(0))
            Debug.WriteLine(printable.Value(0))
            Debug.WriteLine(values.GetValue(0))

               第一种:主接口(本地接口)

               第二种:IprintableObject接口访问

               第三种:IValues接口访问

               这样三种接口合并于一身,都在Value这个方法上。


     

                 要声明接口方法的实现,可以使用任何在实例方法声明上合法的特性(包括 Overloads、Overrides、Overridable、Public、Private、Protected、Friend、Protected Friend、MustOverride、Default 和 Static)。

                 Shared 特性是不合法的,因为它定义类而不是实例方法。







    展开全文
  • 应用程序不直接创建 IDataReader 接口的实例,而是创建继承 IDataReader 的类的实例 dr = cmd.ExecuteReader() Dim dt As New DataTable dt.Load(dr) DataGridView1.DataSource = dt '关闭数据库 conn.Close()...

    一、ADO.NET概述

    Ado.net基于XML和离线计算模型。
    ADO.net的两个核心组件:.Net数据提供程序、DataSet。
    .net数据提供程序用来与数据库的连接,如SQLServer.net数据提供程序——System.Data.SqlClient, 访问SQl2000或以上版本;OleDb.net数据提供程序——System.Data.OleDb,主要访问Access。
    DataSet用来与XML数据连接。设计的目的是独立于任何数据源的数据访问,可有多种不同数据,也可用于XML数据。可与数据库离线,只在返回数据库时,才保持连接。

    二、ADO.NET核心对象

    1、Connection对象负责连接数据库,在System.Data.OleDb空间里对应的是OleDbConnection对象。
    2、Command对象负责生成执行SQl语句,在System.Data.OleDb空间里对应的是OleDbCommand对象。
    3、DataReader对象负责读取数据库的数据,在System.Data.OleDb空间里对应的是OleDbDataReader对象。
    4、DataAdapter对象负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable,在System.Data.OleDb空间里对应的是OleDbDataAdapter对象。
    5、DataSet对象负责存取和更新数据。

    三、ADO.NET操作ACCESS数据库的一般步骤

    1、连接数据库——实例化OleDbConnection对象

    OleDbConnection对象构造函数有2个,使用无参构造函数实例化后要设置其ConnectionString属性,而有参构造函数直接把ConnectionString属性值作为参数提供给了构造函数。
    无参构造函数实例化代码:

             Dim conn As New OleDbConnection()
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#"
    

    有参构造函数实例化代码:

    Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
    

    可以阅读《ADO.NET操作ACCESS数据库——数据库连接字符串》一文了解如何正确书写和获取连接字符串。

    2、打开连接

    实例化OleDbConnection对象后可以使用其Open方法打开连接。

    conn.Open()
    

    3、下达命令(生成SQL语句)——实例化OleDbCommand对象

    OleDbCommand对象有4个构造函数:
    OleDbCommand对象的构造函数
    实例化OleDbCommand对象时需要设置如下属性:
    (1)、CommandText:数据类型为String,要执行的 SQL 语句或存储过程。 默认值为一个空字符串。
    (2)、CommandTimeout:数据类型为Int32,等待命令执行所需的时间(以秒为单位)。 默认值为 30 秒。
    (3)、CommandType:获取或设置一个值,该值指示如何解释 CommandText 属性。数据类型为CommandType,CommandType 值之一。 默认值为 Text。
    CommandType 值有3个,如下所示:
    值 数值 描述
    StoredProcedure 4 存储过程的名称。
    TableDirect 512 表的名称。
    Text 1 SQL 文本命令。 (默认。)
    (4)、Connection:OleDbConnection实例。 默认值为 null。
    (5)、Transaction:如果要执行事务需设置该属性。OleDbTransaction实例。 默认值为 null。
    使用无参构造函数实例化代码:

    Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            Dim cmd As New OleDbCommand()
            cmd.CommandText = "SELECT position.* FROM [position];"
            cmd.CommandTimeout = 30 '默认值为30,所以此句可以省略
            cmd.CommandType = CommandType.Text '这是默认值,所以此句可以省略
            cmd.Connection = conn
    

    可以把属性CommandText或Connection的值作为参数传递给构造函数:

    Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            Dim cmd As New OleDbCommand("SELECT position.* FROM [position];")
            cmd.Connection = conn
    

    或:

    Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            Dim cmd As New OleDbCommand("SELECT position.* FROM [position];", conn)
    

    4、执行命令

    (1)、OleDbCommand对象的ExecuteNonQuery方法

    ExecuteNonQuery方法执行 SQL 语句后将返回受影响的行数,而不返回数据集。主要用于执行插入、更新和删除等不需要返回数据集的SQL语句。
    测试代码:

    '连接数据库
            Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            '打开数据库
            conn.Open()
            '生成命令
            Dim cmd As New OleDbCommand("SELECT position.* FROM [position];", conn)
            '执行命令
            cmd.ExecuteNonQuery()
            '关闭数据库
            conn.Close()
    

    结果报错,如图所示:
    SQL表名、字段名报错
    把SQL语句修改为SELECT [position].* FROM [position]后正常执行命令,估计表名position为系统关键字,所以需要用[]括起。

    (2)、OleDbCommand对象的ExecuteReader方法

    返回一个OleDbDataReader对象,该对象是一个仅向前的只读数据流,所以主要用来执行基本SQL查询,要求SQL语句返回记录集。
    测试代码:

    '连接数据库
            Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            '打开数据库
            conn.Open()
            '生成命令
            Dim cmd As New OleDbCommand("SELECT [position].* FROM [position];", conn)
            '执行命令
            Dim dr As OleDbDataReader '不能new.应用程序不直接创建 IDataReader 接口的实例,而是创建继承 IDataReader 的类的实例
            dr = cmd.ExecuteReader()
            Dim dt As New DataTable
            dt.Load(dr)
            DataGridView1.DataSource = dt
            '关闭数据库
            conn.Close()
    

    (3)、OleDbCommand对象的ExecuteScalar方法

    执行查询后,返回由查询返回的结果集中的第一行的第一列。 其他列或行将被忽略。也就是说只返回一个值。
    测试代码:

    '连接数据库
            Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            '打开数据库
            conn.Open()
            '生成命令
            Dim cmd As New OleDbCommand("SELECT [position].* FROM [position];", conn)
            '执行命令
            MessageBox.Show(cmd.ExecuteScalar.ToString)
            '关闭数据库
            conn.Close()
    

    (4)、OleDbDataAdapter数据适配器

    OleDbDataAdapter就是一个搬运工:从数据源搬运到本地内存中以便来填充DataSet;或者从本地内中数据搬运回到数据源中。
    OleDbDataAdapter对象的构造函数有4个:
    OleDbDataAdapter对象的构造函数
    构造函数里的参数变化万千,仔细观察却不离其中——实例化OleDbDataAdapter对象(无参数构造函数除外)时必须指定其SelectCommand属性(即一个OleDbCommand对象)。
    如:

    '连接数据库
            Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
            '打开数据库
            conn.Open()
            '生成命令
            Dim cmd As New OleDbCommand("SELECT [position].* FROM [position];", conn)
    
            '执行命令
            Dim adapter As New OleDbDataAdapter()
            adapter.SelectCommand = cmd
            '填充DataTable
            Dim dt As New DataTable
            adapter.Fill(dt)
            DataGridView1.DataSource = dt
    
            '关闭数据库
            conn.Close()
    

    上述代码使用OleDbCommand对象的Fill方法来填充DataTable,该方法会自动打开连接,填充完毕后关闭连接,所以不需要conn.Open()和conn.Close()语句,当然如果连接原来是打开的,执行Fill方法后会继续保持打开状态。
    也可以把SelectCommand属性作为参数传入构造函数来实例化OleDbDataAdapter对象,即:

    Dim cmd As New OleDbCommand("SELECT [position].* FROM [position];", conn)
    Dim adapter As New OleDbDataAdapter(cmd)
    

    也可不实例化OleDbCommand对象,直接使用传入构造函数的参数在构造函数内部(我自己的理解,不知道对不对)为SelectCommand属性赋值。如:

    Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
    Dim adapter As New OleDbDataAdapter("SELECT [position].* FROM [position];", conn)
    Dim dt As New DataTable
            adapter.Fill(dt)
            DataGridView1.DataSource = dt
    

    甚至不实例化OleDbConnection对象也是可以的,代码越来越简练,如下:

    Dim adapter As New OleDbDataAdapter("SELECT [position].* FROM [position];",
                                                "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\position.accdb;Jet OLEDB:Database Password=#")
           
            '填充DataTable
            Dim dt As New DataTable
            adapter.Fill(dt)
            DataGridView1.DataSource = dt
    

    5、关闭连接

    执行命令完毕后,记得使用OleDbConnection对象的Close方法关闭数据库连接。

    conn.Close()
    
    展开全文
  • VB.NET和VB6.0有什么区别?

    千次阅读 热门讨论 2015-10-18 17:26:46
    VB.NET和VB6.0有什么区别 Visual Basic .NET是Microsoft Visual Studio .NET套件中主要组成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化为完全面向对象(就像C++)的编程语言。...1.1 什么是 V
  • VB6 如何实现多重接口继承 [问题点数:20分,结帖人xxyj6450] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 取消关注关注xxyj6450 三断笛 本版等级: ...
  • 一、什么是类? 用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式。类是面向对象编程的核心。 VB最为人垢病的是它的面向对象特性。实际上VB是一种基于对象的开发工具。在VB中 建立的...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    公有函数实际是一个类和外部通讯的接口,外部函数通过调用公有函数,按照预先设定好的方法修改类的私有成员。对于上述例子,name和age是私有数据成员,只能通过公有函数SetName()和SetAge()修改,既它们只能按指定...
  • 当我们需要在系统完整启动后,启动某些程序,尤其是服务当中,需要某些服务启动后,程序启动才可以正常执行,这个程序可以帮助大家解决此问题。延时过程,Int_Time 以秒为单位,检测是否存在usb接口条码扫描器
  •  本文即针对德国博世力士乐的伺服驱动器indradrive,采用灵活易用的VB6.0编程语言,通过indradrive本身所带的rs232串行通信接口,实现了上位pc机与伺服驱动器的串行通信,完成了对伺服驱动器内部各控制参数的实时...
  • VB.NET 教程_01_基础语法

    万次阅读 多人点赞 2018-08-08 00:48:58
    VB.Net是一种简单,现代,面向对象的计算机编程语言,由微软开发,将.NET Framework和公共语言运行库的强大功能与作为Visual Basic标志的生产力优势相结合。 Visual Basic .NET(VB.NET)是在.NET Framework上...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • VS2010 VB如何生成DLL文件,调用DLL 详细过程参看http://blog.csdn.net/zzuzpb/article/details/9838541
  • VBVB.NET区别

    千次阅读 热门讨论 2018-03-10 21:11:36
     当你对一件事情好奇的时候就说明你的求知欲是你最旺盛的时候,也是你效率最高的时候,为啥写这样一篇博客,因为被欺骗的太痛苦了,告诉我VBVB.NET很相似没有什么难的,然后我就愉快的学习去了,当我抱着一样的...
  • 内容索引:VB源码,系统相关,延时启动器 当我们需要在系统完整启动后,启动某些程序,尤其是服务当中,需要某些服务启动后,程序启动才可以正常执行,...延时过程,Int_Time 以秒为单位,检测是否存在usb接口条码扫描器
  • 编程语言与数据库的连接是通过一个接口,达到两者交流,以便两者谈情说爱。... 2、DAO, 面向VB,操作ACCEss  3、RDO,上面的加强型  4、OLE DB  5、ADO, 对OLE DB的加强型  6、ADO.net,
  • 在转化过程中,保留了原有的注释和变量名。 VB.Net to C# Converter是一款代码转换软件,将用户的VB.Net项目转换为C#语言。与别的转换软件不同,变量名、注释行、inline comments都被保留下来,更可以转换一些相当...
  • ETL详细讲解

    千次阅读 2019-08-27 23:04:35
    ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL...
  • ”我是真正被VB.NET的强大功能所折服了。求知的渴望驱使着我向大李露出了一个最灿烂的笑容,“行了,别傻笑了,我告诉你不就成了。”大李不禁也笑了起来。 “刚才我说到‘脆弱的基类’时,就提到实现继承最大的问题...
  • 应用VB 与MATLAB 的接口编程,实现脱离MATLAB 环境的人机界面功能。针对纯滞后一阶和二阶系统的大 林算法和SMITH 预估控制算法的MATLAB 仿真过程,介绍了通过选择6 种不同输入信号可以方便地得到相应系统的 PID 算法...
  • VB与MATLAB接口实现方法

    千次阅读 2013-01-28 11:32:34
    VB与MATLAB接口实现方法 MATLAB提供了与G、C++、Fortran等程序的接口,并 没有提供直接和VB接口。可以利用一些新的技术或借 助第三方插件来解决VB和MATLAB的接口问题。下面列出 目前一些常用的方^^ 1.1借助...
  • 金蝶K3插件开发调用存储过程
  • 运用VB语言开发了1套SPMK2001压力校验仪的计算机监控软件,通过串行通讯接口,在上位机上实现对被校验压力表测量数据的实时显示、历史数据的查询、打印、误差的计算、校验曲线的显示,并给出精度等级是否符合要求的判定...
  • VB如何调用DLL

    千次阅读 2014-04-21 16:09:22
    某些动态连接库中不包含过程的名称,在声明它们包含的过程时必须使用序号。同使用名称标识的 DLL 过程相比,如果使用序号,在最终的应用程序中消耗的内存将比较少,而且速度会快些。但是,一个具体的 API 的序号在...
  • vb.net嵌入BAIDU OCR实例

    千次阅读 2019-07-12 16:00:45
    一、准备工作 ...1.2在百度AI平台下载API接口程序 https://ai.baidu.com/sdk#ocr VB.NET就选择C#SDK 以最新的4.X为例,下载之后解压缩.net 4.5的文件夹 1.3然后在VS中将上述两个dll添加...
  • 另外,单片机系统又将字符发送回到微机的人机界面上显示,用于字符传送过程的实时监测。 硬件设计电路截图: VB上位机控制LCD显示电路设计分析: 本系统关键的器件是AT89C51单片机,一方面利用AT89C51单片机自身具有的...
  • VB6中的面向对象编程---实现类继承

    千次阅读 2017-10-21 16:30:11
    VB中Implements的作用 所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。 说明 所谓接口就是代表接口封装的成员(方法以及属性)的原型...
  • VB与MATLAB接口的实现 实例说明在本实例中,我们制作一个能够与Matlab进行交互的应用程序。程序运行结果如图78-1所示。图78-1 运行结果技术要点<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,785
精华内容 12,314
关键字:

vb的过程接口是什么