数据库处理基本上都是存储过程调用,如果使用Remoting技术的话,该如何作?
24 个解决方案
#1
ODBC数据库引擎是系统自带的,使用它就不用安装Oracle客户端了,
不过我没有试过,仅供参考。
不过我没有试过,仅供参考。
#2
表用ODBC,很慢的说,.NET不是提供了Oracle访问的类了吗,直接访问就是了
#3
两位看来都没有试过,无论ODBC还是System.Data.OracleClient,安装Oracle Net*Clinet都是先决条件
#4
你是说安装oracle client,这个问题是没法解决的,你必须安装他才能与oracle server连接,他是server和app的一个桥梁。
不象sql server,ms已经集成了。
不象sql server,ms已经集成了。
#5
BCB中有ODAC控件,可直接通过TCP/IP访问Oracle,.Net中不知道有没有?
另外使用WebService的话只需在Web Server上装Oracle client,不用为每个WinForm宿主安装Oracle Client,但速度慢了很多,约1:7
使用Remoting不知情况如何,希望有经验的指点一下
另外使用WebService的话只需在Web Server上装Oracle client,不用为每个WinForm宿主安装Oracle Client,但速度慢了很多,约1:7
使用Remoting不知情况如何,希望有经验的指点一下
#6
I'm sorry,确实没有试过
不过...你的问题和Remoting有什么关系?
不过...你的问题和Remoting有什么关系?
#7
找到Oracle客户端所需的核心的大约26个DLL,将其拷入你的目标机器;
在目标机器的注册表中建立\Software\Oracle的项,并添加$Oracle_home
的键值。
试几次,应该可以的。
在目标机器的注册表中建立\Software\Oracle的项,并添加$Oracle_home
的键值。
试几次,应该可以的。
#8
不装怎么可以呢?
#9
你用Remoting,就可以不用每个客户端都安装oracle client
但需要在作为Remoting Host的那台服务器上需要安装oracle client.
但需要在作为Remoting Host的那台服务器上需要安装oracle client.
#10
还有:
如果不需要经过防火墙,最好用Remoting,速度,性能都比Web Service要好.
如果不需要经过防火墙,最好用Remoting,速度,性能都比Web Service要好.
#11
有这个问题处理经验的大侠谈一下在Oracle数据库访问的具体问题中,Remoting封装什么对象更合适,仅仅封装OracleConnect是否可以,该如何作?
#12
可以把OracleConnect作为服务端激活对象发布。
其实你不如单独做一个class封装与数据库的连接。然后每次返回Dataset等等。这样可以比较方便。或者你就把microsoft的SQLHelper改一下,假定为OracleHelper,把所有static去掉。然后发布那个对象就可以了。
或者再进一步,把SQLHelp每个函数的ConnectString 记录成OracleHelper的属性。在使用前初始化。其他函数只是把static,把connectionstring(或者是一个OracleConnect)改成使用域就可以了
MSN:colinfly@hotmail.com
其实你不如单独做一个class封装与数据库的连接。然后每次返回Dataset等等。这样可以比较方便。或者你就把microsoft的SQLHelper改一下,假定为OracleHelper,把所有static去掉。然后发布那个对象就可以了。
或者再进一步,把SQLHelp每个函数的ConnectString 记录成OracleHelper的属性。在使用前初始化。其他函数只是把static,把connectionstring(或者是一个OracleConnect)改成使用域就可以了
MSN:colinfly@hotmail.com
#13
我看楼主要是对Romoting不是很了解的话,还是用ODBC把,如果ODBC都不会配,那我佩服你了
下面有一些Oracle的连接方式
Oracle
ODBC
New version:
"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
Old version:
"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
OLEDB, OleDbConnection (.NET)
Standard security:
"Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
This one's from Microsoft, the following are from Oracle
Standard Security:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"
Trusted Connection:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"
OracleConnection (.NET)
Standard:
"Data Source=Oracle8i;Integrated Security=yes";
This one works only with Oracle 8i release 3 or later
Declare the OracleConnection:
C#:
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "my connectionstring";
oOracleConn.Open();
VB.NET:
Imports System.Data.OracleClient
Dim oOracleConn As OracleConnection = New OracleConnection()
oOracleConn.ConnectionString = "my connectionstring"
oOracleConn.Open()
下面有一些Oracle的连接方式
Oracle
ODBC
New version:
"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
Old version:
"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
OLEDB, OleDbConnection (.NET)
Standard security:
"Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
This one's from Microsoft, the following are from Oracle
Standard Security:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"
Trusted Connection:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"
OracleConnection (.NET)
Standard:
"Data Source=Oracle8i;Integrated Security=yes";
This one works only with Oracle 8i release 3 or later
Declare the OracleConnection:
C#:
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "my connectionstring";
oOracleConn.Open();
VB.NET:
Imports System.Data.OracleClient
Dim oOracleConn As OracleConnection = New OracleConnection()
oOracleConn.ConnectionString = "my connectionstring"
oOracleConn.Open()
#14
BCB中有ODAC控件,可直接通过TCP/IP访问Oracle,.Net中不知道有没有?
===================================================================
我原来用过bcb,好象没注意这个odac控件,再说oracle client有几十M,这个控件能行吗?
===================================================================
我原来用过bcb,好象没注意这个odac控件,再说oracle client有几十M,这个控件能行吗?
#15
服务端:
TcpChannel chan;
chan = new TcpChannel(8089);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
客户端:
System.Data.OracleClient.OracleConnection obj = (System.Data.OracleClient.OracleConnection)Activator.GetObject(typeof(System.Data.OracleClient.OracleConnection), "tcp://localhost:8089/SayHello");
try
{
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
string strSql = "select * from tab";
System.Data.OracleClient.OracleDataAdapter oda = new System.Data.OracleClient.OracleDataAdapter( strSql, obj );
System.Data.DataSet ds = new DataSet();
oda.Fill( ds );
dataGrid1.DataSource = ds;
}
catch( System.Exception ee )
{
MessageBox.Show( ee.Message );
}
输出错误提示:The ConnectionString property has not been initialized.
如何解?
TcpChannel chan;
chan = new TcpChannel(8089);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
客户端:
System.Data.OracleClient.OracleConnection obj = (System.Data.OracleClient.OracleConnection)Activator.GetObject(typeof(System.Data.OracleClient.OracleConnection), "tcp://localhost:8089/SayHello");
try
{
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
string strSql = "select * from tab";
System.Data.OracleClient.OracleDataAdapter oda = new System.Data.OracleClient.OracleDataAdapter( strSql, obj );
System.Data.DataSet ds = new DataSet();
oda.Fill( ds );
dataGrid1.DataSource = ds;
}
catch( System.Exception ee )
{
MessageBox.Show( ee.Message );
}
输出错误提示:The ConnectionString property has not been initialized.
如何解?
#16
to: junqiang(笨笨)
ODAC是一个第三方控件 http://www.crlab.com/
该公司有一个类似与System.Data.OracleClient的.Net组件,但只能通过OCI访问
ODAC是一个第三方控件 http://www.crlab.com/
该公司有一个类似与System.Data.OracleClient的.Net组件,但只能通过OCI访问
#17
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
是运行到这句出错吗?
是运行到这句出错吗?
#18
to: caozi(浩子)
到: oda.Fill( ds );
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";没出错,但似乎没有效果
到: oda.Fill( ds );
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";没出错,但似乎没有效果
#19
望这个话题继续讨论,UP一下
#20
我到www.crlab.com上看了一下,他还有个OraDirect .NET组件,这个是不是也可以直接访问Oracle数据库呢
#21
是不是你应用了RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
它是掉用一次创建一次,obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";完了后它会释放了,
System.Data.OracleClient.OracleDataAdapter( strSql, obj );
obj.ConnectionString 这时是一个空值了。
改为RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.Singleton);试下。
它是掉用一次创建一次,obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";完了后它会释放了,
System.Data.OracleClient.OracleDataAdapter( strSql, obj );
obj.ConnectionString 这时是一个空值了。
改为RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.Singleton);试下。
#22
看了你的代码,你想把连接(connection)代理过来,这是不可以的,因为他不能跨进程。你可select在服务器做,把dataset传到client。
#23
>我到www.crlab.com上看了一下,他还有个OraDirect .NET组件,
>这个是不是也可以直接访问Oracle数据库呢
别提这个了。我用过他针对pg的数据库类。结果,免费版的一次查询最多只能够返回六列。
>这个是不是也可以直接访问Oracle数据库呢
别提这个了。我用过他针对pg的数据库类。结果,免费版的一次查询最多只能够返回六列。
#24
caozi(浩子) :
WellKnownObjectMode.SingleCall改为WellKnownObjectMode.Singleton
错误提示如下
权限被拒绝: 无法远程调用非公共或静态方法。
想来应该是 junqiang(笨笨) 说的问题
genuinekl(genuinekl) :
该组件类似与System.Data.OracleClient,目前只能通过OCI访问,而且在我简单的测试中都出Bug
WellKnownObjectMode.SingleCall改为WellKnownObjectMode.Singleton
错误提示如下
权限被拒绝: 无法远程调用非公共或静态方法。
想来应该是 junqiang(笨笨) 说的问题
genuinekl(genuinekl) :
该组件类似与System.Data.OracleClient,目前只能通过OCI访问,而且在我简单的测试中都出Bug
#1
ODBC数据库引擎是系统自带的,使用它就不用安装Oracle客户端了,
不过我没有试过,仅供参考。
不过我没有试过,仅供参考。
#2
表用ODBC,很慢的说,.NET不是提供了Oracle访问的类了吗,直接访问就是了
#3
两位看来都没有试过,无论ODBC还是System.Data.OracleClient,安装Oracle Net*Clinet都是先决条件
#4
你是说安装oracle client,这个问题是没法解决的,你必须安装他才能与oracle server连接,他是server和app的一个桥梁。
不象sql server,ms已经集成了。
不象sql server,ms已经集成了。
#5
BCB中有ODAC控件,可直接通过TCP/IP访问Oracle,.Net中不知道有没有?
另外使用WebService的话只需在Web Server上装Oracle client,不用为每个WinForm宿主安装Oracle Client,但速度慢了很多,约1:7
使用Remoting不知情况如何,希望有经验的指点一下
另外使用WebService的话只需在Web Server上装Oracle client,不用为每个WinForm宿主安装Oracle Client,但速度慢了很多,约1:7
使用Remoting不知情况如何,希望有经验的指点一下
#6
I'm sorry,确实没有试过
不过...你的问题和Remoting有什么关系?
不过...你的问题和Remoting有什么关系?
#7
找到Oracle客户端所需的核心的大约26个DLL,将其拷入你的目标机器;
在目标机器的注册表中建立\Software\Oracle的项,并添加$Oracle_home
的键值。
试几次,应该可以的。
在目标机器的注册表中建立\Software\Oracle的项,并添加$Oracle_home
的键值。
试几次,应该可以的。
#8
不装怎么可以呢?
#9
你用Remoting,就可以不用每个客户端都安装oracle client
但需要在作为Remoting Host的那台服务器上需要安装oracle client.
但需要在作为Remoting Host的那台服务器上需要安装oracle client.
#10
还有:
如果不需要经过防火墙,最好用Remoting,速度,性能都比Web Service要好.
如果不需要经过防火墙,最好用Remoting,速度,性能都比Web Service要好.
#11
有这个问题处理经验的大侠谈一下在Oracle数据库访问的具体问题中,Remoting封装什么对象更合适,仅仅封装OracleConnect是否可以,该如何作?
#12
可以把OracleConnect作为服务端激活对象发布。
其实你不如单独做一个class封装与数据库的连接。然后每次返回Dataset等等。这样可以比较方便。或者你就把microsoft的SQLHelper改一下,假定为OracleHelper,把所有static去掉。然后发布那个对象就可以了。
或者再进一步,把SQLHelp每个函数的ConnectString 记录成OracleHelper的属性。在使用前初始化。其他函数只是把static,把connectionstring(或者是一个OracleConnect)改成使用域就可以了
MSN:colinfly@hotmail.com
其实你不如单独做一个class封装与数据库的连接。然后每次返回Dataset等等。这样可以比较方便。或者你就把microsoft的SQLHelper改一下,假定为OracleHelper,把所有static去掉。然后发布那个对象就可以了。
或者再进一步,把SQLHelp每个函数的ConnectString 记录成OracleHelper的属性。在使用前初始化。其他函数只是把static,把connectionstring(或者是一个OracleConnect)改成使用域就可以了
MSN:colinfly@hotmail.com
#13
我看楼主要是对Romoting不是很了解的话,还是用ODBC把,如果ODBC都不会配,那我佩服你了
下面有一些Oracle的连接方式
Oracle
ODBC
New version:
"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
Old version:
"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
OLEDB, OleDbConnection (.NET)
Standard security:
"Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
This one's from Microsoft, the following are from Oracle
Standard Security:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"
Trusted Connection:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"
OracleConnection (.NET)
Standard:
"Data Source=Oracle8i;Integrated Security=yes";
This one works only with Oracle 8i release 3 or later
Declare the OracleConnection:
C#:
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "my connectionstring";
oOracleConn.Open();
VB.NET:
Imports System.Data.OracleClient
Dim oOracleConn As OracleConnection = New OracleConnection()
oOracleConn.ConnectionString = "my connectionstring"
oOracleConn.Open()
下面有一些Oracle的连接方式
Oracle
ODBC
New version:
"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
Old version:
"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
OLEDB, OleDbConnection (.NET)
Standard security:
"Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
This one's from Microsoft, the following are from Oracle
Standard Security:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"
Trusted Connection:
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"
OracleConnection (.NET)
Standard:
"Data Source=Oracle8i;Integrated Security=yes";
This one works only with Oracle 8i release 3 or later
Declare the OracleConnection:
C#:
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "my connectionstring";
oOracleConn.Open();
VB.NET:
Imports System.Data.OracleClient
Dim oOracleConn As OracleConnection = New OracleConnection()
oOracleConn.ConnectionString = "my connectionstring"
oOracleConn.Open()
#14
BCB中有ODAC控件,可直接通过TCP/IP访问Oracle,.Net中不知道有没有?
===================================================================
我原来用过bcb,好象没注意这个odac控件,再说oracle client有几十M,这个控件能行吗?
===================================================================
我原来用过bcb,好象没注意这个odac控件,再说oracle client有几十M,这个控件能行吗?
#15
服务端:
TcpChannel chan;
chan = new TcpChannel(8089);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
客户端:
System.Data.OracleClient.OracleConnection obj = (System.Data.OracleClient.OracleConnection)Activator.GetObject(typeof(System.Data.OracleClient.OracleConnection), "tcp://localhost:8089/SayHello");
try
{
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
string strSql = "select * from tab";
System.Data.OracleClient.OracleDataAdapter oda = new System.Data.OracleClient.OracleDataAdapter( strSql, obj );
System.Data.DataSet ds = new DataSet();
oda.Fill( ds );
dataGrid1.DataSource = ds;
}
catch( System.Exception ee )
{
MessageBox.Show( ee.Message );
}
输出错误提示:The ConnectionString property has not been initialized.
如何解?
TcpChannel chan;
chan = new TcpChannel(8089);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
客户端:
System.Data.OracleClient.OracleConnection obj = (System.Data.OracleClient.OracleConnection)Activator.GetObject(typeof(System.Data.OracleClient.OracleConnection), "tcp://localhost:8089/SayHello");
try
{
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
string strSql = "select * from tab";
System.Data.OracleClient.OracleDataAdapter oda = new System.Data.OracleClient.OracleDataAdapter( strSql, obj );
System.Data.DataSet ds = new DataSet();
oda.Fill( ds );
dataGrid1.DataSource = ds;
}
catch( System.Exception ee )
{
MessageBox.Show( ee.Message );
}
输出错误提示:The ConnectionString property has not been initialized.
如何解?
#16
to: junqiang(笨笨)
ODAC是一个第三方控件 http://www.crlab.com/
该公司有一个类似与System.Data.OracleClient的.Net组件,但只能通过OCI访问
ODAC是一个第三方控件 http://www.crlab.com/
该公司有一个类似与System.Data.OracleClient的.Net组件,但只能通过OCI访问
#17
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";
是运行到这句出错吗?
是运行到这句出错吗?
#18
to: caozi(浩子)
到: oda.Fill( ds );
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";没出错,但似乎没有效果
到: oda.Fill( ds );
obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";没出错,但似乎没有效果
#19
望这个话题继续讨论,UP一下
#20
我到www.crlab.com上看了一下,他还有个OraDirect .NET组件,这个是不是也可以直接访问Oracle数据库呢
#21
是不是你应用了RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.SingleCall);
它是掉用一次创建一次,obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";完了后它会释放了,
System.Data.OracleClient.OracleDataAdapter( strSql, obj );
obj.ConnectionString 这时是一个空值了。
改为RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.Singleton);试下。
它是掉用一次创建一次,obj.ConnectionString = "user id=scott;data source=DEV;password=tiger";完了后它会释放了,
System.Data.OracleClient.OracleDataAdapter( strSql, obj );
obj.ConnectionString 这时是一个空值了。
改为RemotingConfiguration.RegisterWellKnownServiceType( typeof(System.Data.OracleClient.OracleConnection), "SayHello", WellKnownObjectMode.Singleton);试下。
#22
看了你的代码,你想把连接(connection)代理过来,这是不可以的,因为他不能跨进程。你可select在服务器做,把dataset传到client。
#23
>我到www.crlab.com上看了一下,他还有个OraDirect .NET组件,
>这个是不是也可以直接访问Oracle数据库呢
别提这个了。我用过他针对pg的数据库类。结果,免费版的一次查询最多只能够返回六列。
>这个是不是也可以直接访问Oracle数据库呢
别提这个了。我用过他针对pg的数据库类。结果,免费版的一次查询最多只能够返回六列。
#24
caozi(浩子) :
WellKnownObjectMode.SingleCall改为WellKnownObjectMode.Singleton
错误提示如下
权限被拒绝: 无法远程调用非公共或静态方法。
想来应该是 junqiang(笨笨) 说的问题
genuinekl(genuinekl) :
该组件类似与System.Data.OracleClient,目前只能通过OCI访问,而且在我简单的测试中都出Bug
WellKnownObjectMode.SingleCall改为WellKnownObjectMode.Singleton
错误提示如下
权限被拒绝: 无法远程调用非公共或静态方法。
想来应该是 junqiang(笨笨) 说的问题
genuinekl(genuinekl) :
该组件类似与System.Data.OracleClient,目前只能通过OCI访问,而且在我简单的测试中都出Bug