.Net连接Oracle数据库到底怎么配置

Posted

tags:

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

我对Oracle数据库不怎么熟悉,只学习过SqlServer,谁指教一下,谢谢!

C#连接Oracle数据库(查询数据)

using System;
using System.Collections.Generic;
using System.ComponentModel;
//这行和下一行都要先在引用中填加system.data.oracleclient
using System.Data.OracleClient;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1

public partial class Form1 : Form

public Form1()

InitializeComponent();


private void button1_Click(object sender, EventArgs e)

#region 从region到endregion是手工写的。别的都是系统自动生成的
//定义连接数据库的字符串
string constring = "data source=wzd;user=wzd;password=wzd;";
//进行连接
OracleConnection conn = new OracleConnection(constring);
try

conn.Open();//打开指定的连接
OracleCommand com = conn.CreateCommand();
//写好想执行的Sql语句
com.CommandText =
"select name from mytable where card_no='0000000002'";
OracleDataReader odr = com.ExecuteReader();
//读取数据,如果返回为false的话,就说明到记录集的尾部了
while (odr.Read())

//将读取到的值显示到定义的控件中。
this.lbl.Text = odr.GetOracleString(0).ToString();

odr.Close();//关闭reader.这是一定要写的

catch

MessageBox.Show("erro");//如果发生异常,则提示出错

finally

conn.Close();//关闭打开的连接


#endregion




C#中与Oracle连接的代码

注意:一定要添加这个:

项目->添加引用->.NET->System.Data.OracleClient.dll

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OracleClient;

namespace Test

/// <summary>
/// 简洁期间,直接将实现写在构造函数中
/// </summary>
public class Test

public Test()

//
// TODO: 在此处添加构造函数逻辑
//

string ConnectionString =
"Data Source=LiPu; User Id=SCOTT; Password=scott";

//连接字符串,Data Source 是指数据库名字.如我用的是本机的Oracle
//的数据库,名字为LiPu. user id 是

//用户名,你可以用System 或是你自己添加的一个用户.Password是
//对应用户的密码.

//创建一个新连接
OracleConnection conn = new OracleConnection(ConnectionString);

try

conn.Open(); //打开连接
OracleCommand cmd = conn.CreateCommand();

cmd.CommandText = "select * from emp"; //SQL语句
OracleDataReader rs = cmd.ExecuteReader();
//读取数据,如果rs.Read()返回为false的话,就说明到记录集的尾部了
while(rs.Read())

MessageBox.Show(rs.GetString(1));


rs.Close();

catch (Exception e)

MessageBox.Show(e.Message);

finally

conn.Close();





C#连接Oracle数据库(更改数据库中的记录并查询更改后的数据)

using System;
using System.Collections.Generic;
//这行和下一行都要先在引用中填加system.data.oracleclient
using System.ComponentModel;
using System.Data.OracleClient;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1

public partial class Form1 : Form

public Form1()

InitializeComponent();


private void button1_Click(object sender, EventArgs e)

#region 从region到endregion是手工写的。别的都是系统自动生成的
//定义连接数据库的字符串
string constring = "data source=wzd;user=wzd;password=wzd;";
//进行连接
OracleConnection conn = new OracleConnection(constring);
try

conn.Open();//打开指定的连接
OracleCommand com = conn.CreateCommand();
com.CommandText =
"select name from fin_ipr_inmaininfo where card_no="+
"'0000000002'";//写好想执行的Sql语句
OracleDataReader odr = com.ExecuteReader();
//读取数据,如果返回为false的话,就说明到记录集的尾部了
while (odr.Read())

//将读取到的值显示到定义的控件中。
this.lbl.Text = odr.GetOracleString(0).ToString();

odr.Close();//关闭reader.这是一定要写的

catch

MessageBox.Show("erro");//如果发生异常,则提示出错

finally

conn.Close();//关闭打开的连接


#endregion


private void button2_Click(object sender, EventArgs e)

#region 从region到endregion是手工写的。别的都是系统自动生成的
//定义连接数据库的字符串
string constring = "data source=wzd;user=wzd;password=wzd;";
//进行连接
OracleConnection conn = new OracleConnection(constring);
try

conn.Open();//打开指定的连接
OracleCommand com = conn.CreateCommand();
//写好想执行的Sql语句
com.CommandText =
"update fin_ipr_inmaininfo set name='wzd' where card_no='0000000002'";
com.ExecuteNonQuery();


catch

MessageBox.Show("erro");//如果发生异常,则提示出错

finally

conn.Close();//关闭打开的连接


#endregion


参考技术A 配置文件中如下
<add name="ConnectionString" connectionString="User ID=vdaeng;Password=vdaeng;Data Source=dow_data" />

读取配置文件然后创建连接就行了
参考技术B 不用怎么配置 oracle连接都是标准的连接设置追问

怎么连接虚拟机中的Oracle数据库啊?可会啊?指教一下

oracle链接超时问题,应该怎么设置

设置ORACLE的会话连接超时:
1、profile的idle_time限制
oracle用户的配置文件的密码策略是实时生效的,所见即所得。但是用户配置文件的资源限制是由resource_limit参数决定的。
单位是分钟,默认没记错的话应该是10分钟
要是修改的资源生效,需要设置resource_limit设置为true
alter system set resource_limit=true ;
如果在idle的时间内用户没有执行任何操作,会提示ORA-02396:exceeded maximum idle time, please connect again
2、profile的connect_time限制
默认是UNLIMITED,单位是分钟
用户在到达设置的时候后,不可以在继续操作,会提示ORA-02399: exceeded maximum connect time, you are being logged off
如果是设置1分钟,他会在将近2分钟的时候提醒你重新登录。
3、sqlnet的expire_time限制:
expire_time主要是在指定的时间去探测客户端是否可以连通,如果可以的话重新计时,否则就会断开
在执行rman的时候遇见:ORA-03135: connection lost contact,可以尝试将此值设置大些。(ID 729811.1)
4、sqlnet的inbound_connect_timieout_listener_name限制
单位是秒,默认值是60
参考技术A 原因:
1、EF、EFCore中默认存在链接池,每次数据库操作完成之后,会将连接丢到连接池。连接的释放过程单独管控(这里不做详细解释);
2、当Oracle数据库中设置有连接(会话)有效期时,到期后,Oracle服务端会中断连接,并将会话标识为:SNIPED状态;

注:查询数据中已超时,未释放的会话:select * from v$session where status = 'SNIPED';
3、当Oracle数据库中连接超时后,EF连接池中的连接依然存在,若再次进行数据库操作,则会提示idle超时异常;
解决方案:
方案1:调整数据库设置,将数据库中的“IDLE_TIME”设置为“UNLIMITED”,具体方式请自行百度;(注:默认为UNLIMITED,出现idle超时,一定是DBA添加了限制)
可通过以下语句查看当前设置:
select username, b.* from dba_users a, dba_profiles b where a.profile = b.profile and username='IOT_SUB_ALL';
方案2:
在项目代码数据库连接字符串中添加:min pool size=0;设置,将EF连接池最小连接保持数设置为0(默认为1);
连接字符串样式:
"User Id=用户id;Password=密码;Data Source=IP:端口/服务器名;min pool size=0;"
连接字符串参数详细说明见:

以上是关于.Net连接Oracle数据库到底怎么配置的主要内容,如果未能解决你的问题,请参考以下文章

Navicat Oracal

Oracal数据库安装配置教程

Oracle SQL Developer 连接数据库如何对应数据库配置文件

C#的EF框架怎么连接Oracle数据库

oracle数据库怎么net manager配置监听

jdbc连接oracle11g出现ora-12505错误怎么解决?