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();

c#连接oracle11,C#连接远程oracle11g数据库相关推荐

  1. c#连接oracle11,C#连接Oracle 11g 无需安装Oracle客户端

    1.首先到Oracle网站上下载ODAC 下载地址1:http://download.csdn.net/detail/easyboot/9456476 下载地址2:http://www.oracle. ...

  2. sqllite连接远程mysql_sqlite数据库如何远程连接?

    sqlite数据库如何远程连接代码如下: QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE"); db.setHostName ...

  3. 傻瓜式部署教程2:docker搭建oracle11g数据库

    须知 以下是傻瓜式配置,全部复制照搬即可,待部署熟练了,可自行修改相应的参数等信息. 前提 1.虚拟机 centos7 建议分配40G (因为centos7 内置了docker)2.centos7中已 ...

  4. spss statistics 19.0配置odbc连接远程oracle数据库

    本文档讲的是spss statistics 19.0如何配置odbc连接本地oracle数据库,步骤如下: 1.开启远程oracle数据库服务,开启以下两个即可 2.在本地客户端中,安装好oracle ...

  5. navicat无法连接远程的数据库解决

    我们经常使用navicat连接远程mysql数据库进行所有的操作(其实最牛逼的就是用黑窗口敲命令),我们会发现报错,61 connection refused,即连接被拒绝,这个时候我们从哪里定位问题 ...

  6. php 不可以连接远程mysql数据库

    php 不可以连接远程mysql数据库 进入 /etc/selinux more config # This file controls the state of SELinux on the sys ...

  7. 阿里云centos 6.3 安装宝塔nginx面板无法远程mysql数据库和无法FTP连接问题解决方法

    数据库不能远程连接解决方法: 1.数据库配置可以远程访问 2.允许3306端口外出 ftp不能连接解决方法:端口添加3900-4000

  8. 如何断开mongodb数据库连接_如何连接远程mongodb数据库

    mongo shell安装好以后,就需要通过mongo shell来连接对应的远程mongodb数据库了,看下面的这个示例: mongo "mongodb://cluster0-shard- ...

  9. jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...

    求用jsch网络工具包通过ssh连接远程oracle数据库(数据库在unix上)java代码例子:为何jsch发送:sqlplususer/pwd@service此命令,却没有结果返回啊.下面是代码: ...

最新文章

  1. 深入SecureFile—新一代LOB揭秘000
  2. 正则表达式匹配换行符
  3. Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述
  4. asp.net core mvc权限控制:分配权限
  5. pca图解读_干货!手把手一步一步解读PCA分析,逃学博士尽力了!
  6. node.js模块和包
  7. 5 仓库号xxx的主数据仍然现存不能删除(慎用)
  8. 渗透测试入门4之内网跨边界应用
  9. MFC无法使用CDialogEx类
  10. POJ 2817 状态DP 字符串找最多的重复
  11. 用VB无窗口透明Usercontrol编写透明浮动按钮
  12. ImportError: No module named rospy
  13. 土地土壤数据下载网站整理
  14. 小米路由的IPv6支持教程(纯转保存)
  15. DW怎么把模板拽进html文件中,在Dreamweaver中如何使用模板
  16. Cadence学习笔记-第二章-瞬态仿真
  17. 如何把视频转换为gif动图
  18. 【号外】联手腾讯故宫试水“互联网+”
  19. 粗糙集理解之二:属性约简
  20. 天水师范计算机与科学怎么样,甘肃大学分析:陇东学院和天水师范哪所师范类本科好?...

热门文章

  1. 将窗体显示在 PageControl 上。
  2. Linux下挂载ISO文件
  3. Tensorflow 改进的MNIST手写体数字识别
  4. mybatis如何根据mapper接口生成其实现类
  5. JAVA如何判断两个字符串是否相等(亲测第二种方式)
  6. 一图看懂py2/py3编码
  7. HTTP解决设置返回header的code码为400仍然是200的问题
  8. Bug使用swoole找不到引用类
  9. PHP字符串替换函数选择
  10. Linux之Debian下安装LAMP apt-get安装方式