在一个工程里有许多界面里都要连同一个数据库,只是用不到不同的表,能不能成一个类,我初学VB,JAVA里可以做成一个类,大家都可以用,VB是否可以,怎么做
解决方案 »
- vb调用shellexecute打开word文件,word一闪而过,何解?
- 我认为可以,可是我们如何制作呢?我们为什么不成立一个软件著作权协会像,音乐那样,只要有人侵权我们的软件可以,通过著作权协会来帮助
- 连接odbc数据源的connectionstring怎么写?
- 求助关于打开文件的问题!!
- 大家快告诉我怎样使鼠标的enabled为false????谢了谢了!!!!!
- sql语句查询问题!谢谢!!2000sever可以运行,但是98就不可以了!请看看!
- DeleteMenu 和 RemoveMenu 的区别
- :在程序中多层分组,不知道怎样写,哪位大侠帮帮忙,谢谢!!!!!!!,急急急
- 问一下,怎样用编程的方法知道某一用户是用的那一种操作系统?回答对了,一定会加分的!谢谢!
- 紧急!!!如保在VB中执行我在MS-SQL7。0中的存储过程??谢谢??
- ppt与VB 急!!!!!
- 求全角半角转换,比较的函数或办法!
设置一个“连接”变量(比如:ADODB.Connection)在工程的某个模块中,将其设置Public类型;然后在登录或者是Form_Load过程当中建立连接,这样在工程的其它界面里都可以使用改“连接”对象了;最后在程序结束之前将该“连接”关闭掉,并释放改变量。
Public Conn As ADODB.Connection
Function mainConn() As Boolean
Dim strCn As String
Set Conn = New Connection
Conn.CursorLocation = adUseClient
strCn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=库文件名;Data Source=服务器名"
Conn.Open strCn
Exit Function
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
建一个模块,例如叫conn。
在程序内只要使用
conn.conn 就可以实现数据库的连接了!
Public sub ExecuteSql(sql as string)
if cn.adstateopen then cn.close
cn.open sql,,,,,,,,
.................(主要是你输入的SQL是可变的啊,核心只是执行一下数据集生成啊)
不过你删除的时候就要考虑另外一样东西,就是每次判断SQL语句(自己定义的)是不是Delete开头的!
End sub
用类来编写数据库程序
类模块使VB编程更为简洁。通过封装技术将复杂的代码同程序的其它部分分隔开,并通过方法和属性同程序的其它部分对话。对于类的种种好处,相信大家都非常清楚了。本文主要介绍类在数据库编程方面的应用。通过类模块的封装,你可以只需要书写一次那些冗长繁人的SQL查询语句,并能方便地同他人分享你的代码。本文向你介绍如何利用类模块创建SQL查询对象。本文用到Northwind数据库。数据访问技术用的是DAO。 工程目的
本工程的目的是要建立一个查询,该查询将从Northwind数据库中返回Beverage供应商的信息。这些信息包括哪种饮料是由哪些供应商供应的。看上去很简单,但你得对三个表进行操作,这三个表分别是Suppliers, Categories和Products, 因此你需要写一串很长的SQL查询语句,所以你只希望写一次就够了。
设计类模块
首先确认你已添加了对Microsoft DAO 3.5 Object Library的引用。接下来在工程中添加一个类模块。将该类模块重命名为ClsSQL。 让我们先为这个类创建两个新的公共属性,代码如下: Public CompanyName As String 'Object property
Public CategoryName As String 'Object property添加一个公用变量,名为strMsg。该变量用来保存对象返回给用户的信息。
Public CompanyName As String 'Object property
Public CategoryName As String 'Object propertyPublic strMsg As String 现在为这个类编写RunQuery方法。
Sub RunQuery()Dim strSQL As String
Dim db As Database
Dim qdfTemp As QueryDef
Dim rsResults As Recordset'Construct the SQL string
strSQL = "SELECT DISTINCTROW Suppliers.CompanyName, " & "Products.ProductName FROM Suppliers INNER JOIN " & "(Categories INNER JOIN Products ON Categories.CategoryID = " & "Products.CategoryID) " & "ON Suppliers.SupplierID = Products.SupplierID " & "WHERE (((Suppliers.CompanyName)='" & CompanyName & "') AND " & "((Categories.CategoryName)='" & CategoryName & "'))"Set db = OpenDatabase("C:\MSOffice\Access\Samples\Northwind.mdb")Set qdfTemp = db.CreateQueryDef("")
qdfTemp.SQL = strSQLSet rsResults = qdfTemp.OpenRecordset(dbOpenSnapshot)
rsResults.MoveFirst'Enumerate the recordset
With rsResults
Do While Not .EOF
Debug.Print .Fields(0); " "; .Fields(1)
strMsg = strMsg & .Fields(1) & vbCrLf
.MoveNext
Loop
End WithrsResults.Close
qdfTemp.CloseEnd Sub现在让我们来简单地分析一下上面的代码。在上面的代码中数据库的路径是用的绝对路径。如果Northwind数据库的路径同你机器上的不同,你需要修改这个路径,以便程序能找到这个数据库。
SQL代码是在Access中建立好然后粘贴到程序中来的。这样做不仅免去你书写代码的麻烦,而且还不容易出错。在粘贴完之后,将原来在SQL代码中的"Bigfoot Breweries" 和 "Beverages"用公共变量CompanyName和CategoryName替换掉。 在定义了QueryDef之后,程序枚举记录集。记录集的信息不仅在立即窗口中显示出来,同时被写入strMsg变量中。 在结束对类模块的编码之前,我们还需要对类模块的Terminate事件编写代码。将下面的代码放到该事件中。 Private Sub Class_Terminate()MsgBox strMsg, Title:="Beverage Results for " & CompanyName, buttons:=vbExclamationEnd Sub
现在我们已结束了对类模块的编程。接下来在窗体中添加一个命令按钮。将该命令按钮的Caption属性设置为&Run Query。将下面的代码放在命令按钮的鼠标单击事件中。
Private Sub Command1_Click()Dim objSQL As ClsSQL'Set the object variable
Set objSQL = New ClsSQL'Set properties of the new object
With objSQL
.CompanyName = "Bigfoot Breweries"
.CategoryName = "Beverages"
End With'Retrieve the properties
Debug.Print objSQL.CompanyName
Debug.Print objSQL.CategoryName'Call a method of the object
objSQL.RunQuery'Destroy the object
Set objSQL = NothingEnd Sub
在上面的语句中,我们首先定义了一个对象变量,接下来将这个对象变量初始化为我们刚建立的类的一个实例。我们也可以用下面这一条语句来实现。
Dim objSQL As New ClsSQL紧接着我们设置该对象的属性。CompanyName = "Bigfoot Breweries"和CategoryName = "Beverages", 将这两个值在立即窗口中显示出来。这样做仅仅为了验证而已。然后调用对象的RunQuery方法。
objSQL.RunQuery最后释放该对象,触发对象的Terminate事件,弹出消息框,显示查询结果。
MsgBox strMsg, Title:="Beverage Results for " & CompanyName, buttons:=
vbExclamation结论
现在你已对用类模块进行数据库编程的好处有了初步的认识。当然你也可以用标准模块来实现同样的功能。但是用标准模块远不如用类模块简洁。用类模块,你可以为每个查询初始化一个新的对象,而复杂的SQL代码则被封装在类中。用标准模块,你必须将控制权交给模块。最后,类模块更易于移植。
如果问题解决,请尽快结贴!