vb.net 怎么操作数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb.net 怎么操作数据库相关的知识,希望对你有一定的参考价值。

我只会个连接语句,后面的就不会了。。。
conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=数据库.accdb;Jet OLEDB:Database Password=MyDbPassword;"
我想在textbox1中显示表一中“一些数据”字段下的第一个内容,怎么写啊。VB6中是rs.movefirst
text1.text=rs("一些数据")
VB.net中怎么写啊。快,谢谢!

如果楼主熟悉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() '关闭连接追问

你的方法可行。那么请问怎么movefirst,last,next呢?

追答

用OleDbDataReader对象读取数据库,只能向下读(调用Read方法,相当于ADO中的MoveNext方法),而且不能修改数据库的值。如果只是查询数据,这个方法是最快的。
如果想用像Ado的Recordset对象那样强大的功能,就不能用OleDbDataReader读了。
需要像下面这样:
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=数据库.accdb;Jet OLEDB:Database Password=MyDbPassword") ’新建一个数据库连接对象
Dim adapter As New OleDbDataAdapter("Select * From 数据表", conn) '新建一个数据修改器对象
conn.Open() '打开数据库连接
Dim builder As New OleDbCommandBuilder(adapter) '让.NET Framework根据已有的SQL查询语句自动创建用于增加、修改、删除数据的SQL语句
Dim ds As New DataSet() '创建一个数据集对象
adapter.Fill(ds, "MyTable") '读取数据库的内容,将数据保存到DataSet对象的MyTable数据表中
'在这里,可以通过DataSet对象修改数据库里的内容
'比如,读取最后一行的数据
Dim cRow As Integer = ds.Table("MyTable").Rows.Count; '获取数据表MyTable的总行数
textbox1.Text = ds.Table("MyTable").Rows(cRow-1)("字段") '读取字段的值
'比如 修改第一行的数据
ds.Table("MyTable").Rows(0)("字段") = "你好"
'比如 新增一行
Dim newRow As DataRow = ds.Table("MyTable").NewRow() '创建一个新的数据行对象
newRow("字段") = "新的一行"
ds.Table("MyTable").Rows.Add(newRow) '把这行添加到数据表中

adapter.Update(ds) '将修改后的数据更新到数据库
adapter.Close() '关闭OleDbDataAdapter
conn.Close() '关闭连接

以上代码全部手打,没有实际运行,仅供参考。楼主有问题可以继续问我。或者添加ADODB的引用,这样,你就可以用VB6以前操作数据库的方法

参考技术A   Private stroledbprovider As String = "System.Data.OleDb" '大小写 -------更改此处可连接不同类型的数据库
'连接数据库的信息,更改连接不同数据库信息-------"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=datapath;Persist Security Info=false"
Private stroledbconn As String = "Provider=SQLOLEDB;Data Source=localhost,10000;Initial Catalog=haofefe;user id=sa ; password=123" 'Integrated Security=SSPI"
'*********************************************************************

'************生成Dbproviderfactory,idbconnection,idbcommand,and idatareader********
Dim cnfactory As IDbConnection
Dim drcustsreader As IDataReader
Dim cmfactory As IDbCommand
Dim dpfactory As DbProviderFactory
Public login As Boolean = False
Private Sub createconn()
Try
dpfactory = System.Data.Common.DbProviderFactories.GetFactory(stroledbprovider)
cnfactory = dpfactory.CreateConnection
cnfactory.ConnectionString = stroledbconn
cmfactory = cnfactory.CreateCommand
cmfactory.CommandType = CommandType.Text

Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
'*********************************************************

'利用生成的连接
'****************查询数据**************
Public Function getsources(ByVal strcomm As String) As DataTable

Dim i As Integer
Try
Call createconn() '调用生成实例
cmfactory.CommandText = strcomm
getsources = New DataTable
cnfactory.Open()
drcustsreader = cmfactory.ExecuteReader(CommandBehavior.KeyInfo)
With drcustsreader
For i = 0 To .FieldCount - 1
getsources.Columns.Add(.GetName(i))
Next
While .Read
Dim objcells(.FieldCount - 1) As Object
.GetValues(objcells)
getsources.Rows.Add(objcells)
End While

End With
drcustsreader.Close()
'getsources.Load(drcustsreader)
Return getsources
cnfactory.Close()
Catch ex As Exception
cnfactory.Close()
Return New Data.DataTable
MsgBox(ex.ToString)
End Try
End Function
'**********************************
'-------------------------------------------------------------------------------------------------------------
'*******************查看已连接信息******************
Public Sub connectionstatistics(ByVal conn As SqlConnection)
Dim htstats As Hashtable
Try
htstats = CType(conn.RetrieveStatistics, Hashtable)
Dim strstats As String
strstats = "ServerVersion: " + conn.ServerVersion.ToString + ControlChars.CrLf
Dim ostat As Object
Dim strstat As String
For Each ostat In htstats.Keys
strstat = ostat.ToString
If InStr(strstat, "Time") > 0 Then
strstats = strstats + strstat + "=" + Microsoft.VisualBasic.Format(CLng(htstats(strstat)) / 1000, "#,##0.000") + " secs" + vbCrLf
Else
strstats = strstats + strstat + "=" + htstats(strstat).ToString + ControlChars.Cr + ControlChars.Lf
End If

Next
MsgBox(strstats, MsgBoxStyle.Information, "Connection Statistics")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
参考技术B 用top1追问

top1是什么。

追答

你不是要选第一条记录吗

以上是关于vb.net 怎么操作数据库的主要内容,如果未能解决你的问题,请参考以下文章

vb.net数据库操作

vb.net怎么从DataSet中读取一行的数据

vb.net 怎么生成csv文件与怎么读取csv文件

如何用VB.NET StringBuilder优化字符串操作性能

VB.NET通过调用模块怎么建立access数据库?

从 vb.net 中的 datetime sql server 类型操作日期和时间