重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、首先打开Visual Studio 2008代码窗口,添加引用。
创新互联建站专注于科尔沁左翼网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供科尔沁左翼营销型网站建设,科尔沁左翼网站制作、科尔沁左翼网页设计、科尔沁左翼网站官网定制、小程序定制开发服务,打造科尔沁左翼网络公司原创品牌,更为您提供科尔沁左翼网站排名全网营销落地服务。
2、输入以下代码:Public conn1 As SqlConnection = New SqlConnection 。
3、声明关键字 Public;(因为是全局变量,所以用Public 来声明)。
4、如果SQL 数据库就在本机,则用以下代码连接。
5、如果代码太长,影响可读性,可以用空格加"_"后,回车换行即可。
如果楼主熟悉VB6,可以直接在项目中添加ADODB的Com引用,这样你就可以像VB6那样操作数据库了!
另外
.NET
Framework中连接数据库要用到ADO.NET。如果要操作Access数据库,要用到System.Data.OleDb命名空间下的许多类。
比如按楼主所说,“我想在textbox1中显示表一中【一些数据】字段下的第一个内容”:
'首先导入命名空间
Imports
System.Data
Imports
System.Data.OleDb
'然后在某一个事件处理程序中写:
Dim
conn
As
New
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=数据库.accdb;Jet
OLEDB:Database
Password=MyDbPassword")
Dim
command
As
New
OleDbCommand("Select
*
From
数据表",
conn)
conn.Open()
'打开数据库连接
Dim
reader
As
OleDbDataReader
=
command.ExecuteReader()
'执行SQL语句,返回OleDbDataReader
对象
Do
While
reader.Read()
'读取一条数据
textbox1.Text
+=
reader("一些数据")
VbCrLf
Loop
reader.Close()
'关闭OleDbDataReader
conn.Close()
'关闭连接
我们先简单的了解一下什么是消息队列(MSMQ)?消息队列是 Windows (NT也有MSMQ WIN / /me/xp不含消息队列服务但是支持客户端的运行)操作系统中通讯的基础 也是用于创建分布式 松散连接通讯应用程序的工具 这些应用程序可以通过不同种类的网络进行通讯 也可以与脱机的计算机通讯 消息队列分为用户创建队列和系统队列 用户队列分为
· 公共队列 在整个可传递消息的 消息队列 网络中复制并传输 并且有可能由网络连接的所有站点访问
· 专用队列 不在整个网络中发布 相反 它们仅在所驻留的本地计算机上可用 专用队列只能由知道队列的完整路径名或标签的应用程序访问
· 管理队列 包含确认在给定 消息队列 网络中发送的消息回执的消息 指定希望 MessageQueue 组件使用的管理队列
· 响应队列 包含目标应用程序接收到消息时返回给发送应用程序的响应消息 指定希望 MessageQueue 组件使用的响应队列
系统队列分为
· 日记队列 可选地存储发送消息的副本和从队列中移除的消息副本
· 死信队列 存储无法传递或已过期的消息的副本
· 专用系统队列 是一系列存储系统执行消息处理操作所需的管理和通知消息的专用队列
现在大家对消息队列有了简单的了解后 就该进入主题了 要使用m *** q进行软件开发需要安装m *** q 安装完后就该进入实际的开发阶段 先打开vs net ide中的 服务起资源管理器 展开你想建立消息队列的计算机名 再展开 消息队列 右击它在弹出菜单中选择 新建 建立一个新的消息队列 并为它指定一个名字 这个名字可以随意 也可以通过编程来完成 代码如下
system Messaging MessageQueue Create( \Private$\MyPrivateQueue ) 建立专用队列System Messaging MessageQueue Create( myMachine\MyQueue ) 建立公共队列
其实我认为使用那中方法并不重要 重要的是搞清楚专用队列和公共队列的差别(其他队列不是必须的) 在本例中是通过 服务器资源管理器 分别在服务器上建立了专用队列和公共队列
程序功能 本程序分为两部分包括服务器程序(安装在sql server服务器上)和客户端程序 客户端的作用是用来编写t sql语句并将t sql语句放在消息中 并将消息发送到sql server服务器上的消息队列中去 服务器程序检查指定的消息队列当发现有新消息到达时 就开始执行消息中的内容 由于消息中的内容是t sql语句所以服务器端实际上是执行对数据库的操作
客户端程序
public Sub client()Dim tM As New System Messaging MessageQueue()tM Path = \Private$\jk FORMATNAME:PUBLIC= d dc c fd ce d b e d 与指定计算机中的消息队列建立连接 Dim newMessage As New System Messaging Message(TextBox Text) 接受文本筐的t sql语句newMessage Label = This is the label 消息名字 tM Send(newMessage) 发送消息End Sub
服务端程序
public Sub server()Dim NewQueue As New System Messaging MessageQueue( \Private$\jk ) FORMATNAME:PUBLIC= d dc c fd ce d b e d 与指定计算机中的消息队列建立连接 Dim m As System Messaging Message 查看消息队列中的消息m = NewQueue Receive m Formatter = New System Messaging XmlMessageFormatter(New String() { System String mscorlib })Dim st As Stringst = m Body 消息队列中消息的消息内容 既sql语句Dim con As New OleDb OleDbConnection( 输入自己的数据库连接字符串 )con Open()Dim As New OleDb OleDbCommand(st con) 执行消息中的sql语句 ExecuteNonQuery()con Close()End Sub
我为什么要使用消息队列来处理数据库的操作这个问题我一直没回答 现在我就来回答这个问题 在本程序中你会发现在sub client()中我并没连接数据库和请求数据 而是通过发消息来操作数据库的 这个好处是节省了两部分时间
对数据库连解请求数据的时间
从数据库返回数据的时间
在很多情况下其实我们并不需要看见具体的数据就知道该怎么修改数据库中的数据 例如要删除张三的记录 就可以将一条简单的删除语句放入消息中 发给服务器让服务器程序去处理对数据的更改
此外消息队列的另一个主要用途也就是当前erp软件中必不可少的 就是在断开连接时保存信息 当连接恢复时发送消息 消息在如下两种情况中无法迅速地传递到它们的队列 当队列驻留的计算机无法工作时 或当路由消息所需的域控制器无法工作时 消息队列 可让您应对这些情况 使得在从网络上断开连接或必要的计算机或控制器无法工作时 仍可以继续发送消息 在这些情形下 消息暂时存储在本地计算机或传递路由上的某个计算机的队列中 直到完成传递所需的资源重新联机
例如 假设有一个记录所有在出差的销售人员发送的订单的中央队列 这些销售人员每天的大部分时间都以断开连接的方式工作 记录来自客户站点的订单信息 并且每天拨号连接一次 将所有这些信息传输到中央队列中 因为消息在发送方断开连接时仍可发送到队列 所以销售人员可以在记录客户信息时立即发送他们的消息 但系统会缓存这些消息直到晚间进行拨号连接为止
在断开连接时要怎么保存消息呢?向断开连接的队列发送消息同向可用队列发送消息的过程几乎完全相同 当要向其发送的队列不可用时 不必进行任何特殊的配置以使组件将消息存储在临时队列中 在client代码的tM Path = \Private$\jk 后面有一条注释语句 其实这条语句就是实现向断开连接的队列发送消息的功能 只要将tM Path = \Private$\jk 这条语句换成tM Path = FORMATNAME:PUBLIC= d dc c fd ce d b e d 其中PUBLIC后面的数字是要发送到计算机的guid数字 这个数字可以打开那台计算机的消息队列的属性看见 使用这种方法就可以在断开连接的情况下保证对服务器的操作是有效 现在运行这个程序后 打开win 中的 开始 》 程序 》 管理工具 》 计算机管理 在 计算机管理 窗口中展开 服务和应用程序 》 消息队列 》 传出队列 你将在右边的窗口中看见你建立的消息 (如果你使用tM Path = \Private$\jk 语句 在 计算机管理 窗口中展开 服务和应用程序 》 消息队列 》 专用队列 可以看见你建立的队列 )
其实消息队列的编程并不复杂 但它在网络环境的程序开发中是非常有用的 可以简化大量的开发过程和节省开发时间
其实消息队列的编程有很大的灵活性 几乎可以解决网络编程的大部分问题 比如聊天程序 远程控制程序
本文针对消息队列做了一个简单的介绍 并举了一个例来说明怎么在 net下使用消息编程 达到快速高效稳定的对数据库进行操作 最后补充要说的是在internet中也一样可以使用消息队列 只需要将tM Path = FORMATNAME:PUBLIC= d dc c fd ce d b e d 语句后面的数字变成消息队列所在服务器的数字就可以了 但是要提醒大家的是使用消息在传输时将占有大量的带宽 所以在不是必须的时候 internet下的编程不要使用消息
lishixinzhi/Article/program/net/201311/15668
参考一下下面这段代码就可以了。
Imports System.Data
'引入数据库操作类命名空间
Imports System.Data.OleDb
'引入ADO.NET操作命名空间
Public Class FrmModifystInfo
Inherits System.Windows.Forms.Form
Public ADOcmd As OleDbDataAdapter
Public ds As DataSet = New DataSet()
'建立DataSet对象
Public mytable As Data.DataTable
'建立表单对象
Public myrow As Data.DataRow
'建立数据行对象
Public rownumber As Integer
'定义一个整型变量来存放当前行数
Public SearchSQL As String
Public cmd As OleDbCommandBuilder
'======================================================
#Region " Windows 窗体设计器生成的代码 "
#End Region
'======================================================
Private Sub FrmModifystInfo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'窗体的载入
TxtSID.Enabled = False
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False '设置信息为只读
Dim tablename As String = "student_Info "
SearchSQL = "select * from student_Info "
ExecuteSQL(SearchSQL, tablename) '打开数据库
ShowData() '显示记录
End Sub
Private Sub ShowData()
'在窗口中的textbox中显示数据
myrow = mytable.Rows.Item(rownumber)
TxtSID.Text = myrow.Item(0).ToString
TxtName.Text = myrow.Item(1).ToString
ComboSex.Text = myrow.Item(2).ToString
TxtBornDate.Text = Format(myrow.Item(3), "yyyy-MM-dd ")
TxtClassno.Text = myrow.Item(4).ToString
TxtTel.Text = myrow.Item(5).ToString
TxtRuDate.Text = Format(CDate(myrow.Item(6)), "yyyy-MM-dd ")
TxtAddress.Text = myrow.Item(7).ToString
TxtComment.Text = myrow.Item(8).ToString
End Sub
Private Sub BtFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtFirst.Click
'指向第一条数据
rownumber = 0
ShowData()
End Sub
Private Sub BtPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtPrev.Click
'指向上一条数据
BtNext.Enabled = True
rownumber = rownumber - 1
If rownumber 0 Then
rownumber = 0 '如果到达记录的首部,行号设为零
BtPrev.Enabled = False
End If
ShowData()
End Sub
Private Sub BtNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtNext.Click
'指向上一条数据
BtPrev.Enabled = True
rownumber = rownumber + 1
If rownumber mytable.Rows.Count - 1 Then
rownumber = mytable.Rows.Count - 1 '判断是否到达最后一条数据
BtNext.Enabled = False
End If
ShowData()
End Sub
Private Sub BtLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtLast.Click
'指向最后一条数据
rownumber = mytable.Rows.Count - 1
ShowData()
End Sub
Private Sub BtDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtDelete.Click
mytable.Rows.Item(rownumber).Delete() '删除记录
If MsgBox( "确定要删除改记录吗? ", MsgBoxStyle.OKCancel + vbExclamation, "警告 ") = MsgBoxResult.OK Then
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自动生成的SQL语句
ADOcmd.Update(ds, "student_Info ")
BtNext.PerformClick()
End If
End Sub
Private Sub BtModify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtModify.Click
TxtSID.Enabled = False '关键字段只读
TxtName.Enabled = True '可读写
ComboSex.Enabled = True
TxtBornDate.Enabled = True
TxtClassno.Enabled = True
TxtRuDate.Enabled = True
TxtTel.Enabled = True
TxtAddress.Enabled = True
TxtComment.Enabled = True
End Sub
Private Sub BtUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtUpdate.Click
If Not Testtxt(TxtName.Text) Then
MsgBox( "请输入姓名! ", vbOKOnly + vbExclamation, "警告 ")
TxtName.Focus()
Exit Sub
End If
If Not Testtxt(ComboSex.Text) Then
MsgBox( "请选择性别! ", vbOKOnly + vbExclamation, "警告 ")
ComboSex.Focus()
Exit Sub
End If
If Not Testtxt(TxtClassno.Text) Then
MsgBox( "请选择班号! ", vbOKOnly + vbExclamation, "警告 ")
TxtClassno.Focus()
Exit Sub
End If
If Not Testtxt(TxtTel.Text) Then
MsgBox( "请输入联系电话! ", vbOKOnly + vbExclamation, "警告 ")
TxtTel.Focus()
Exit Sub
End If
If Not Testtxt(TxtAddress.Text) Then
MsgBox( "请输入家庭住址! ", vbOKOnly + vbExclamation, "警告 ")
TxtAddress.Focus()
Exit Sub
End If
If Not IsNumeric(Trim(TxtSID.Text)) Then
MsgBox( "请输入数字学号! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtSID.Focus()
End If
If Not IsDate(TxtBornDate.Text) Then
MsgBox( "出生时间应输入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtBornDate.Focus()
End If
If Not IsDate(TxtRuDate.Text) Then
MsgBox( "入校时间应输入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
TxtRuDate.Focus()
Exit Sub
End If
myrow.Item(0) = Trim(TxtSID.Text)
myrow.Item(1) = Trim(TxtName.Text)
myrow.Item(2) = Trim(ComboSex.Text)
myrow.Item(3) = Trim(TxtBornDate.Text)
myrow.Item(4) = Trim(TxtClassno.Text)
myrow.Item(5) = Trim(TxtTel.Text)
myrow.Item(6) = Trim(TxtRuDate.Text)
myrow.Item(7) = Trim(TxtAddress.Text)
myrow.Item(8) = Trim(TxtComment.Text)
mytable.GetChanges()
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自动生成的SQL语句
ADOcmd.Update(ds, "student_Info ")
'对数据库进行更新
MsgBox( "修改学籍信息成功! ", vbOKOnly + vbExclamation, "警告 ")
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False '重新设置信息为只读
End Sub
Private Sub BtCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtCancel.Click
TxtSID.Enabled = False
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False
End Sub
Public Function ExecuteSQL(ByVal SQL As String, ByVal table As String)
Try
'建立ADODataSetCommand对象
'数据库查询函数
ADOcmd = New OleDbDataAdapter(SQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\student.mdb ")
'建立ADODataSetCommand对象
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 Class