我用Data控件连接的数据库
怎么才能按条件搜索我需要的记录,并把其中一个字段的值付给变量。 还有一个问题是DBGrid控件可以同时显示两个表的内容吗? 两个表是有关联的,而且我只要它显示两个表中的某几个字段就可以了。 |
用adodb控件,这个控件运行时不会显示出来但可以引用。全称Microsoft ActiveX Data Objects 2.5 Library。
连接方法是先引用。
然后生命如下的连接对象。
Dim con As New ADODB.Connection
该连接对象有一个连字符串属性息属性
con.ConnectionString
而连接字符串比较长如果不愿意写也可以临时建立一个adodc的空间,用控件属性中的生成字符串来自动生成连接字符串。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\BOOK.MDB;Persist Security Info=False
以上为mdb的连接字符串示例,也可以生成sql sever的连接信息,非常简单。建立一个adodc控件拖拽到窗体上。然后左键单击adodc控件,选属性里面最后一项就是生成连接字符串。
连接字符串的完整设置代码如下(注意别忘了“”和最后的;)。
con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\BOOK.MDB;Persist Security Info=False;"
利用con.Open的方法打开数据库。
con.ConnectionTimeout设置数据库连接超时时间多长时间随意(不设置的化程序会永远尝试连接数据库,而导致死循环)。
con.State验证数据库是否连接成功这个返回布尔值真(true)和假(false)。
con.Execute("T-SQL语句"),此方法用于执行SQL语句返回结果可以附值给其它的变量或给文本框直接显示。
以上是连接数据库的方法。
[此贴子已经被作者于2004-10-03 22:56:54编辑过]
Imports System.Data.OleDb '引入ADO.NET操作命名空间 Module Module1 Public ADOcmd As OleDbDataAdapter Public ds As DataSet = New DataSet() '建立DataSet对象 Public mytable As DataTable '建立表单对象 Public myrow As DataRow '建立数据行对象 Public rownumber As Integer '定义一个整型变量来存放当前行数 Public SearchSQL As String Public cmd As OleDbCommandBuilder
Public Function Testtxt(ByVal txt As String) As Boolean '判断字符串是否为空 If Trim(txt) = "" Then Testtxt = False Else Testtxt = True End If End Function
Public Function ExecuteSQL(ByVal SQL As String, ByVal table As String) Try '建立ADODataSetCommand对象 '数据库查询函数 Dim constr As String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" constr = constr & Application.StartupPath() & "\student.mdb" ADOcmd = New OleDbDataAdapter(SQL, constr) '建立ADODataSetCommand对象
ds.Clear() ds.Tables.Clear() '清除数据集中的所有表
ADOcmd.Fill(ds, table) '取得表单
mytable = ds.Tables.Item(0) '取得名为table的表 rownumber = 0 '设置为第一行 myrow = mytable.Rows.Item(rownumber) '取得第一行数据 Catch MsgBox(Err.Description) End Try End Function
End Module
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim tablename As String tablename = "userID" '表的名称 SearchSQL = "SELECT 用户名, 密码 FROM userID WHERE (用户名 = '" & TxtUserName.Text & " ') " Try Module1.ExecuteSQL(SearchSQL, tablename) '查询函数 If Module1.myrow.Item(1) = TxtUserPassword.Text Then '比较输入密码和数据库的密码 Module1.myrow.Item(1) = TxtNewPassword.Text Module1.mytable.GetChanges() Module1.cmd = New OleDbCommandBuilder(Module1.ADOcmd) '使用自动生成的SQL语句 Module1.ADOcmd.Update(Module1.ds, tablename) '对数据库进行更新 MsgBox("密码修改成功!", vbOKOnly + vbExclamation, "警告") Me.Hide() Else Exit Sub End If Catch MsgBox("没有该用户", vbOKOnly + vbExclamation, "警告") End Try End Sub