c#访问Oracle数据库,执行数据库操作
2017-10-31 11:56
232 查看
第一步:应用服务器安装Oracle11g客户端
第二步:在Oracle数据库中新增表:
第三步,在C#程序中访问数据库进行数控操作:
在程序中引用:System.Data.OracleClient
1.执行sql 语句返回受影响的行数:
//执行sql 语句返回受影响的行数
new MyOracleDBHelper().ExecuteNonQuery("insert into tb_user(userid,username) values (2,'张三');");
2.执行存储过程,返回受影响的行数
在Oracle数据库中新增存储过程:
create or replace
procedure padduser(v_ID IN NUMBER, v_NAME IN VARCHAR2) is
begin
insert into tb_user(userid, username) values(v_ID, v_NAME);
end padduser;调用:
OracleParameter[] param1 = new OracleParameter[2];
param1[0] = new OracleParameter("v_ID", 6);
param1[1] = new OracleParameter("v_NAME", "test123456");
new MyOracleDBHelper().ExecuteNonQuery("padduser", param1);
3.执行SQL语句,返回DataSet
DataSet ds1 = new MyOracleDBHelper().ExecuteDataSet("select USERID,USERNAME from TB_USER t ORDER BY t.userid asc");
foreach (DataRow item in ds1.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
4.执行存储过程,返回DataSet
在Oracle数据库中新增存储过程:
create or replace
procedure Demo(data out sys_refcursor) as
begin
open data for select* from tb_user;
end Demo;调用:
OracleParameter[] param2 = new OracleParameter[1];
param2[0] = new OracleParameter("data", OracleType.Cursor);
param2[0].Direction = ParameterDirection.Output;
DataSet ds2 = new MyOracleDBHelper().ExecuteDataSet("Demo", param2);
foreach (DataRow item in ds2.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
附MyOracleDBHelper.cs:
public class MyOracleDBHelper
{
//private static readonly string OracleConnStr = ConfigurationManager.AppSettings["TEST_OracleConnStr"];
private static readonly string OracleConnStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.217)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));Persist Security Info=True;User ID=system;Password=System123456;";
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string strSql)
{
int result = 0;
using (OracleConnection con=new OracleConnection (OracleConnStr))
{
if (con.State == System.Data.ConnectionState.Closed)
con.Open();
using (OracleCommand cmd = new OracleCommand(strSql, con))
{
result = cmd.ExecuteNonQuery();
}
con.Close();
}
return result;
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="strProcedure"></param>
/// <param name="param"></param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string strProcedure, OracleParameter[] param)
{
int result = 0;
using (OracleConnection con = new OracleConnection(OracleConnStr))
{
if (con.State == System.Data.ConnectionState.Closed)
con.Open();
using (OracleCommand cmd=new OracleCommand())
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = strProcedure;
cmd.Connection = con;
foreach (var item in param)
{
cmd.Parameters.Add(item);
}
result = cmd.ExecuteNonQuery();
}
con.Close();
}
return result;
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回DataSet 结果集</returns>
public DataSet ExecuteDataSet(string strSql)
{
using (DataSet ds = new DataSet())
{
using (OracleConnection con = new OracleConnection(OracleConnStr))
{
if (con.State == ConnectionState.Closed)
con.Open();
using (OracleCommand cmd = new OracleCommand(strSql, con))
{
using (OracleDataAdapter sda = new OracleDataAdapter())
{
sda.SelectCommand = cmd;
sda.Fill(ds);
}
}
con.Close();
}
return ds;
}
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="strProcedure"></param>
/// <param name="param"></param>
/// <returns>返回DataSet 结果集</returns>
public DataSet ExecuteDataSet(string strProcedure, OracleParameter[] param)
{
using (DataSet ds=new DataSet ())
{
using (OracleConnection con = new OracleConnection(OracleConnStr))
{
if (con.State == ConnectionState.Closed)
con.Open();
using (OracleCommand cmd=new OracleCommand ())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = strProcedure;
cmd.Connection = con;
foreach (var item in param)
{
cmd.Parameters.Add(item);
}
using (OracleDataAdapter dap=new OracleDataAdapter ())
{
dap.SelectCommand = cmd;
dap.Fill(ds);
}
}
con.Close();
}
return ds;
}
}
}
附程序代码:
class Program
{
static void Main(string[] args)
{
try
{
//执行sql 语句返回受影响的行数
new MyOracleDBHelper().ExecuteNonQuery("insert into tb_user(userid,username) values (2,'张三');");
//执行存储过程,返回受影响的行数
//create or replace
//procedure padduser(v_ID IN NUMBER, v_NAME IN VARCHAR2) is
//begin
// insert into tb_user(userid, username) values(v_ID, v_NAME);
//end padduser;
OracleParameter[] param1 = new OracleParameter[2];
param1[0] = new OracleParameter("v_ID", 6);
param1[1] = new OracleParameter("v_NAME", "test123456");
new MyOracleDBHelper().ExecuteNonQuery("padduser", param1);
//执行SQL语句,返回DataSet
DataSet ds1 = new MyOracleDBHelper().ExecuteDataSet("select USERID,USERNAME from TB_USER t ORDER BY t.userid asc");
foreach (DataRow item in ds1.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
//执行存储过程,返回DataSet
//create or replace
//procedure Demo(data out sys_refcursor) as
//begin
// open data for select* from tb_user;
//end Demo;
OracleParameter[] param2 = new OracleParameter[1];
param2[0] = new OracleParameter("data", OracleType.Cursor);
param2[0].Direction = ParameterDirection.Output;
DataSet ds2 = new MyOracleDBHelper().ExecuteDataSet("Demo", param2);
foreach (DataRow item in ds2.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}
System.Console.Read();
}
}
C#针对Oracle数据库的简单常见操作完成!
第二步:在Oracle数据库中新增表:
第三步,在C#程序中访问数据库进行数控操作:
在程序中引用:System.Data.OracleClient
1.执行sql 语句返回受影响的行数:
//执行sql 语句返回受影响的行数
new MyOracleDBHelper().ExecuteNonQuery("insert into tb_user(userid,username) values (2,'张三');");
2.执行存储过程,返回受影响的行数
在Oracle数据库中新增存储过程:
create or replace
procedure padduser(v_ID IN NUMBER, v_NAME IN VARCHAR2) is
begin
insert into tb_user(userid, username) values(v_ID, v_NAME);
end padduser;调用:
OracleParameter[] param1 = new OracleParameter[2];
param1[0] = new OracleParameter("v_ID", 6);
param1[1] = new OracleParameter("v_NAME", "test123456");
new MyOracleDBHelper().ExecuteNonQuery("padduser", param1);
3.执行SQL语句,返回DataSet
DataSet ds1 = new MyOracleDBHelper().ExecuteDataSet("select USERID,USERNAME from TB_USER t ORDER BY t.userid asc");
foreach (DataRow item in ds1.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
4.执行存储过程,返回DataSet
在Oracle数据库中新增存储过程:
create or replace
procedure Demo(data out sys_refcursor) as
begin
open data for select* from tb_user;
end Demo;调用:
OracleParameter[] param2 = new OracleParameter[1];
param2[0] = new OracleParameter("data", OracleType.Cursor);
param2[0].Direction = ParameterDirection.Output;
DataSet ds2 = new MyOracleDBHelper().ExecuteDataSet("Demo", param2);
foreach (DataRow item in ds2.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
附MyOracleDBHelper.cs:
public class MyOracleDBHelper
{
//private static readonly string OracleConnStr = ConfigurationManager.AppSettings["TEST_OracleConnStr"];
private static readonly string OracleConnStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.217)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));Persist Security Info=True;User ID=system;Password=System123456;";
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string strSql)
{
int result = 0;
using (OracleConnection con=new OracleConnection (OracleConnStr))
{
if (con.State == System.Data.ConnectionState.Closed)
con.Open();
using (OracleCommand cmd = new OracleCommand(strSql, con))
{
result = cmd.ExecuteNonQuery();
}
con.Close();
}
return result;
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="strProcedure"></param>
/// <param name="param"></param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string strProcedure, OracleParameter[] param)
{
int result = 0;
using (OracleConnection con = new OracleConnection(OracleConnStr))
{
if (con.State == System.Data.ConnectionState.Closed)
con.Open();
using (OracleCommand cmd=new OracleCommand())
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = strProcedure;
cmd.Connection = con;
foreach (var item in param)
{
cmd.Parameters.Add(item);
}
result = cmd.ExecuteNonQuery();
}
con.Close();
}
return result;
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回DataSet 结果集</returns>
public DataSet ExecuteDataSet(string strSql)
{
using (DataSet ds = new DataSet())
{
using (OracleConnection con = new OracleConnection(OracleConnStr))
{
if (con.State == ConnectionState.Closed)
con.Open();
using (OracleCommand cmd = new OracleCommand(strSql, con))
{
using (OracleDataAdapter sda = new OracleDataAdapter())
{
sda.SelectCommand = cmd;
sda.Fill(ds);
}
}
con.Close();
}
return ds;
}
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="strProcedure"></param>
/// <param name="param"></param>
/// <returns>返回DataSet 结果集</returns>
public DataSet ExecuteDataSet(string strProcedure, OracleParameter[] param)
{
using (DataSet ds=new DataSet ())
{
using (OracleConnection con = new OracleConnection(OracleConnStr))
{
if (con.State == ConnectionState.Closed)
con.Open();
using (OracleCommand cmd=new OracleCommand ())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = strProcedure;
cmd.Connection = con;
foreach (var item in param)
{
cmd.Parameters.Add(item);
}
using (OracleDataAdapter dap=new OracleDataAdapter ())
{
dap.SelectCommand = cmd;
dap.Fill(ds);
}
}
con.Close();
}
return ds;
}
}
}
附程序代码:
class Program
{
static void Main(string[] args)
{
try
{
//执行sql 语句返回受影响的行数
new MyOracleDBHelper().ExecuteNonQuery("insert into tb_user(userid,username) values (2,'张三');");
//执行存储过程,返回受影响的行数
//create or replace
//procedure padduser(v_ID IN NUMBER, v_NAME IN VARCHAR2) is
//begin
// insert into tb_user(userid, username) values(v_ID, v_NAME);
//end padduser;
OracleParameter[] param1 = new OracleParameter[2];
param1[0] = new OracleParameter("v_ID", 6);
param1[1] = new OracleParameter("v_NAME", "test123456");
new MyOracleDBHelper().ExecuteNonQuery("padduser", param1);
//执行SQL语句,返回DataSet
DataSet ds1 = new MyOracleDBHelper().ExecuteDataSet("select USERID,USERNAME from TB_USER t ORDER BY t.userid asc");
foreach (DataRow item in ds1.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
//执行存储过程,返回DataSet
//create or replace
//procedure Demo(data out sys_refcursor) as
//begin
// open data for select* from tb_user;
//end Demo;
OracleParameter[] param2 = new OracleParameter[1];
param2[0] = new OracleParameter("data", OracleType.Cursor);
param2[0].Direction = ParameterDirection.Output;
DataSet ds2 = new MyOracleDBHelper().ExecuteDataSet("Demo", param2);
foreach (DataRow item in ds2.Tables[0].Rows)
{
System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
}
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}
System.Console.Read();
}
}
C#针对Oracle数据库的简单常见操作完成!
相关文章推荐
- sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。
- c# 进度条BackgroundWorker 组件用来执行诸如数据库事务、文件下载等耗时的异步操作
- C#连接Oracle数据库(执行增删改查操作)
- C#以操作数据库方式访问EXCEL文件的几个常见问题及解决方法
- C#操作数据库,分页、执行存储过程等 [一] - ADO.NET入门之中
- 使用XAMPP可视化管理Mysql,使用JDBC访问数据库执行插入、查询、删除等操作
- C#连接Oracle数据库通过存储过程操作数据库
- c# 数据库访问静态类 支持多条SQL语句事务操作
- C#中执行批处理文件(.bat),执行数据库相关操作
- C# Windows服务 定时执行访问数据库循环发送手机短信
- C#写入数据库访问层时update正常执行后数据库并没改变
- c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
- C#连接oracle数据库执行简单的增删改查操作
- C#连接Oracle数据库通过存储过程操作数据库
- C#连接oracle数据库执行简单的增删改查操作
- C#操作数据库,分页、执行存储过程等 [二] - ADO.NET入门之中
- C#访问数据库(SQL Server)
- 无法用排他锁锁定该数据库,以执行该操作!
- python-Django中设置操作shell时执行的数据库命令在控制台显示
- VC访问数据库程序 在编译器中执行正确 debug文件时无法访问数据库 提示“对象关闭时,无法访问数据库”