用vb.net怎么连接其他电脑上的oracle数据库

Posted

tags:

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

用了vb.net写了一个程序,用来连接局域网中服务器上的oracle数据库。
客户端电脑和服务器端电脑互相能ping通。 但是无法连接服务器上的数据库。
如果把程序放到服务器上运行,是可以连接的,因此在参数设置,用户名,密码等应该没有问题。
用的是oleDB连接。

提示信息是:
未找到 Oracle 客户端和网络组件。这些组件是由
Oracle 公司提供的,是 Oracle 8i 版

(或更高) 客户软件安装的一部分。 在安装这些组件之前,将无法使用此提供程序

网上也搜索半天,其中一种是用户权限问题,这个原因目前可以排除。

请教各位高手,望指点一二

本地也要按照oracle客户端,完成后需要配置tnsname

tnsname一般样式为见下 其中 xxxx是定义的tns名称,yyyy是主机地址,zzzz是数据库名称
# TNSNAMES.ORA Network Configuration File: D:\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
xxxx =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yyyy)(PORT = 1521))
)
(CONNECT_DATA =
(SID = zzzz)
)
)
参考技术A 在本地安装了oracle客户端后,还需要在配置dbca就可以了

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怎么连接其他电脑上的oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库,怎么查库名,我要用JDBC连接?域名+端口+库名,但是我不知道我电脑上的ORACLE的库名是啥

如何在VB.net中连接oracle数据库

odbc 连接oracle数据库失败!

Oracle 查询局域网内其他电脑上的Oracle数据库表

vb.net 怎么操作数据库

vb.net如何连接远程db2数据库