c#连接oracle11,C#连接远程oracle11g数据库

windows form程序开发,连接和操作oralce数据库,可以使用.NET专门提供的Oracle.NET

framework

数据库提供的类,该类位于System.Data.OracleClient命名空间中,并包含在System.Data.OracleClient.dll程序集中。

使用方法,在“解决方案管理器”上右键单击项目名称,选择快捷菜单中的“添加引用”项,完成以上操作后,弹出“添加引用”对话框,选择对话框中的.NET选项卡,然户在.NET表中选择System.Data.OracleClient项,并单击“确定”按钮保存退出,引用添加完成后,在程序中引入命名空间,按照下面的示例说明即可完成对Oracle数据库的操作,

远程示例:

远程oracle数据库中 "product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora"

文件的配置项如下(其中chenslxp为服务器名,ip地址为192.168.198.128)

ORCL =

(DESCRIPTION =

(ADDRESS =

(PROTOCOL = TCP)(HOST = chenslxp)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

连接方法1.:

在"product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora" 文件里追加连接DNS

连接方法2:

把字符串连接写成:

Data

Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=chenslxp)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist

Security Info=True;User Id=user1; Password=1

其中的chenslxp可以ip地址替换,User Id=user1; Password=1 需要用真实用户名和密码替换。

C#连接远程Oracle数据库及示例

Windows

Form程序开发,连接和操作Oralce数据库,可以使用.NET专门提供的Oracle.NET Framework

数据库提供的类,该类位于System.Data.OracleClient命名空间中,并包含在System.Data.OracleClient.dll程序集中。

使用方法,在“解决方案管理器”上右键单击项目名称,选择快捷菜单中的“添加引用”项,完成以上操作后,弹出“添加引用”对话框,选择对话框中的.NET选项卡,然户在.NET表中选择System.Data.OracleClient项,并单击“确定”按钮保存退出,引用添加完成后,在程序中引入命名空间,按照下面的示例说明即可完成对Oracle数据库的操作,

C#连接远程数据库远程示例:

把字符串连接写成:

Data

Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sunday)));User

ID=sa;Password=sa

方法2:oracleConnectionString :Provider=OraOLEDB.Oracle.1;User

ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST=

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))

(CONNECT_DATA = (SERVICE_NAME = orcl)))

方法3:oracleConnectionString:User

ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL =

TCP)(HOST=10.10.125.250)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))

User ID=scott;Password=tiger;Data

Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =

TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ROGNE)));Persist Security Info=True;User Id=sa; Password=sa

关于数据库的操作

1.数据库连接

有2种:

第一种:古老的方法(较为死板,不利于灵活操作),即用OracleConnection的类来连接

string mysqlstr ="user id = xal;data source = xal;password =

xal";

OracleConnection mycnn = new OracleConnection(mysqlstr);

mycnn.open();

第二种:新式的方法(使用较为灵活),即利用OracleConnectoinStringBuilder类来连接

OracleConnectionStringBuilder OcnnStrB = new

OracleConnectionStringBuilder;

OCnnStrB.DataSource = "xal";

OCnnStrB.UserID = "xal";

OCnnStrB.Password = "xal";

myCnn = new OracleConnection(OCnnStrB.ConnectionString);

myCnn.open();

2.事务操作

myConn.open();

OracleCommand insertComm = new

OracleCommand();

insertComm.Connection = myCnn;

insertComm.Transaction = myCnn.BeginTransaction();

try

{

事务操作语句;

insertComm.Transaction.Commit();

}

catch(exption ex)

{

insertComm.Transaction.Rollback();

MessageBox(ex.Message);

}

finally

{

myConn.close();

}

3.创建命令参数

private OracleParameter CreateOraParam(string ParamName, object

ParamValue)

{

OracleParameter Result = new OracleParameter();

Result.ParameterName = ParamName;

if (ParamValue != null)

{

Result.Value = ParamValue;

}

else

{

Result.Value = DBNull.Value;

}

return Result;

}

这样的话,当要对数据库操作时就可以:

insertComm.CommandText = "insert into TESTADODOTNET (ID, NAME, AGE,

PIC) values (:pID, :pName, :pAge, :pPic)";

insertComm.Parameters.Add(CreateOraParam("pID", (txtID.Text.Trim()

!= "") ? txtID.Text.Trim() : null));

insertComm.Parameters.Add(CreateOraParam("pName",

(txtName.Text.Trim() != "") ? txtName.Text.Trim() : null));

insertComm.Parameters.Add(CreateOraParam("pAge",

(txtAge.Text.Trim() != "") ? txtAge.Text.Trim() : null));

4.数据集的浏览(例:将结果显示在comboBox1中)

OracleDataAdapter oda = new OracleDataAdapter(selectCommand);

DataTable newtable = new DataTable();

oda.Fill(newtable);

foreach (DataRow dr in newtable.Rows) //共有newtable.rows.count条记录

{

comboBox1.Items.Add(dr[0].ToString());

}

5.设置输入只能是数字(例:现在往textBox1中输入。如只能输入字母的方法类似)

private void textBox1_KeyPress(object sender,

KeyPressEventArgs e)//属性中的事件

{

e.Handled = !((Char.IsNumber(e.KeyChar)) || ((Keys)e.KeyChar ==

Keys.Back));

}

6.Form窗口关闭时引发的事件:弹出一个确定退出的对话框

private void

form1_FormClosing(object sender, FormClosingEventArgs e)

{

if (MessageBox.Show("是否退出系统?", "确认", MessageBoxButtons.YesNo,

MessageBoxIcon.Question) == DialogResult.Yes)

{

e.Cancel = false;

}

else

{

e.Cancel = true;

}

}

7.OracleParameter的用法

第一步:先创建命令参数

private OracleParameter CreateOraParam(string ParamName, object

ParamValue)

{

OracleParameter Result = new OracleParameter();

Result.ParameterName = ParamName;

if (ParamValue != null)

{

Result.Value = ParamValue;

}

else

{

Result.Value = DBNull.Value;

}

return Result;

}

第二步:写SQL语句,并调用第一步的参数(例如::pID是个参数,代表调用insertComm.Parameters.Add中的pID的值)

insertComm.CommandText = "insert into

TESTADODOTNET (ID, NAME, AGE, PIC) values (:pID, :pName, :pAge,

:pPic)";

insertComm.Parameters.Add(CreateOraParam("pID",

(txtID.Text.Trim() != "") ? txtID.Text.Trim() : null));

insertComm.Parameters.Add(CreateOraParam("pName",

(txtName.Text.Trim() != "") ? txtName.Text.Trim() : null));

insertComm.Parameters.Add(CreateOraParam("pAge",

(txtAge.Text.Trim() != "") ? txtAge.Text.Trim() : null));

第三步:添加pictureBox1图片的二进制流字段pAge

//创建字节数组用于给IMAGE字段赋值,fileLength是指所选的文件的大小

byte[] tmpImage = new byte[fileLength];

//根据字节数组创建内存流,之后对该流的操作将会影响字节数组的内容

MemoryStream curStream = new MemoryStream(tmpImage);

//把控件内显示的图形写入到流中,需强制指定格式

pictureBox1.Image.Save(curStream,

curImageFormat);//curImageFormat前面指定的图片格式

insertComm.Parameters.Add(CreateOraParam("pPic", tmpImage));

OracleConnection conn = new

OracleConnection(@"Data Source=ZX;User ID=sa;Password=sa");//Data

Source后面跟你数据库的名字,User ID为用户名,Password为密码

conn.Open();

string sql = "insert into users(name,pwd) values(:name,:pwd)";

OracleCommand cmd = new OracleCommand(sql, conn);

OracleParameter parn = new OracleParameter(":name", name);

cmd.Parameters.Add(parn);

OracleParameter

parp = new OracleParameter(":pwd", name);

cmd.Parameters.Add(parp);

int result =

cmd.ExecuteNonQuery();//result接收受影响行数,也就是说result大于0的话表示添加成功

conn.Close();

cmd.Dispose();

return result;

conn.Open();

string sql = "delete from users where id=:id";

OracleCommand cmd = new OracleCommand(sql, conn);

OracleParameter pari = new OracleParameter(":id", id);

cmd.Parameters.Add(pari);

int

result =

cmd.ExecuteNonQuery();//result接收受影响行数,也就是说result大于0的话表示添加成功

conn.Close();

cmd.Dispose();

return result;

public DataTable Select()

{

OracleConnection conn = new OracleConnection(@"Data Source=zz;User

ID=sa;Password=sa");//Data Source后面跟你数据库的名字,User

ID为用户名,Password为密码

conn.Open();

string

sql = "select * from users";

OracleCommand cmd = new OracleCommand(sql, conn);

OracleDataAdapter oda = new OracleDataAdapter(cmd);

DataTable dt = new DataTable();

oda.Fill(dt);

conn.Close();

cmd.Dispose();

return

dt; }

dataGridView1.DataSource = Select();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值