c#访问Oracle数据库,执行数据库操作

ゝ一纸荒年。 2022-06-06 05:12 476阅读 0赞

第一步:应用服务器安装Oracle11g客户端

第二步:在Oracle数据库中新增表:

20171031115637580

第三步,在C#程序中访问数据库进行数控操作:

在程序中引用:System.Data.OracleClient

1.执行sql 语句返回受影响的行数:

  1. //执行sql 语句返回受影响的行数
  2. new MyOracleDBHelper().ExecuteNonQuery("insert into tb_user(userid,username) values (2,'张三');");

2.执行存储过程,返回受影响的行数

在Oracle数据库中新增存储过程:

  1. create or replace
  2. procedure padduser(v_ID IN NUMBER, v_NAME IN VARCHAR2) is
  3. begin
  4. insert into tb_user(userid, username) values(v_ID, v_NAME);
  5. end padduser;

调用:

  1. OracleParameter[] param1 = new OracleParameter[2];
  2. param1[0] = new OracleParameter("v_ID", 6);
  3. param1[1] = new OracleParameter("v_NAME", "test123456");
  4. new MyOracleDBHelper().ExecuteNonQuery("padduser", param1);

3.执行SQL语句,返回DataSet

  1. DataSet ds1 = new MyOracleDBHelper().ExecuteDataSet("select USERID,USERNAME from TB_USER t ORDER BY t.userid asc");
  2. foreach (DataRow item in ds1.Tables[0].Rows)
  3. {
  4. System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
  5. }

4.执行存储过程,返回DataSet

在Oracle数据库中新增存储过程:

  1. create or replace
  2. procedure Demo(data out sys_refcursor) as
  3. begin
  4. open data for select* from tb_user;
  5. end Demo;

调用:

  1. OracleParameter[] param2 = new OracleParameter[1];
  2. param2[0] = new OracleParameter("data", OracleType.Cursor);
  3. param2[0].Direction = ParameterDirection.Output;
  4. DataSet ds2 = new MyOracleDBHelper().ExecuteDataSet("Demo", param2);
  5. foreach (DataRow item in ds2.Tables[0].Rows)
  6. {
  7. System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
  8. }

附MyOracleDBHelper.cs:

  1. public class MyOracleDBHelper
  2. {
  3. //private static readonly string OracleConnStr = ConfigurationManager.AppSettings["TEST_OracleConnStr"];
  4. 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;";
  5. /// <summary>
  6. /// 执行SQL语句
  7. /// </summary>
  8. /// <param name="strSql"></param>
  9. /// <returns>返回受影响的行数</returns>
  10. public int ExecuteNonQuery(string strSql)
  11. {
  12. int result = 0;
  13. using (OracleConnection con=new OracleConnection (OracleConnStr))
  14. {
  15. if (con.State == System.Data.ConnectionState.Closed)
  16. con.Open();
  17. using (OracleCommand cmd = new OracleCommand(strSql, con))
  18. {
  19. result = cmd.ExecuteNonQuery();
  20. }
  21. con.Close();
  22. }
  23. return result;
  24. }
  25. /// <summary>
  26. /// 执行存储过程
  27. /// </summary>
  28. /// <param name="strProcedure"></param>
  29. /// <param name="param"></param>
  30. /// <returns>返回受影响的行数</returns>
  31. public int ExecuteNonQuery(string strProcedure, OracleParameter[] param)
  32. {
  33. int result = 0;
  34. using (OracleConnection con = new OracleConnection(OracleConnStr))
  35. {
  36. if (con.State == System.Data.ConnectionState.Closed)
  37. con.Open();
  38. using (OracleCommand cmd=new OracleCommand())
  39. {
  40. cmd.CommandType = System.Data.CommandType.StoredProcedure;
  41. cmd.CommandText = strProcedure;
  42. cmd.Connection = con;
  43. foreach (var item in param)
  44. {
  45. cmd.Parameters.Add(item);
  46. }
  47. result = cmd.ExecuteNonQuery();
  48. }
  49. con.Close();
  50. }
  51. return result;
  52. }
  53. /// <summary>
  54. /// 执行SQL语句
  55. /// </summary>
  56. /// <param name="strSql"></param>
  57. /// <returns>返回DataSet 结果集</returns>
  58. public DataSet ExecuteDataSet(string strSql)
  59. {
  60. using (DataSet ds = new DataSet())
  61. {
  62. using (OracleConnection con = new OracleConnection(OracleConnStr))
  63. {
  64. if (con.State == ConnectionState.Closed)
  65. con.Open();
  66. using (OracleCommand cmd = new OracleCommand(strSql, con))
  67. {
  68. using (OracleDataAdapter sda = new OracleDataAdapter())
  69. {
  70. sda.SelectCommand = cmd;
  71. sda.Fill(ds);
  72. }
  73. }
  74. con.Close();
  75. }
  76. return ds;
  77. }
  78. }
  79. /// <summary>
  80. /// 执行存储过程
  81. /// </summary>
  82. /// <param name="strProcedure"></param>
  83. /// <param name="param"></param>
  84. /// <returns>返回DataSet 结果集</returns>
  85. public DataSet ExecuteDataSet(string strProcedure, OracleParameter[] param)
  86. {
  87. using (DataSet ds=new DataSet ())
  88. {
  89. using (OracleConnection con = new OracleConnection(OracleConnStr))
  90. {
  91. if (con.State == ConnectionState.Closed)
  92. con.Open();
  93. using (OracleCommand cmd=new OracleCommand ())
  94. {
  95. cmd.CommandType = CommandType.StoredProcedure;
  96. cmd.CommandText = strProcedure;
  97. cmd.Connection = con;
  98. foreach (var item in param)
  99. {
  100. cmd.Parameters.Add(item);
  101. }
  102. using (OracleDataAdapter dap=new OracleDataAdapter ())
  103. {
  104. dap.SelectCommand = cmd;
  105. dap.Fill(ds);
  106. }
  107. }
  108. con.Close();
  109. }
  110. return ds;
  111. }
  112. }
  113. }

附程序代码:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. try
  6. {
  7. //执行sql 语句返回受影响的行数
  8. new MyOracleDBHelper().ExecuteNonQuery("insert into tb_user(userid,username) values (2,'张三');");
  9. //执行存储过程,返回受影响的行数
  10. //create or replace
  11. //procedure padduser(v_ID IN NUMBER, v_NAME IN VARCHAR2) is
  12. //begin
  13. // insert into tb_user(userid, username) values(v_ID, v_NAME);
  14. //end padduser;
  15. OracleParameter[] param1 = new OracleParameter[2];
  16. param1[0] = new OracleParameter("v_ID", 6);
  17. param1[1] = new OracleParameter("v_NAME", "test123456");
  18. new MyOracleDBHelper().ExecuteNonQuery("padduser", param1);
  19. //执行SQL语句,返回DataSet
  20. DataSet ds1 = new MyOracleDBHelper().ExecuteDataSet("select USERID,USERNAME from TB_USER t ORDER BY t.userid asc");
  21. foreach (DataRow item in ds1.Tables[0].Rows)
  22. {
  23. System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
  24. }
  25. //执行存储过程,返回DataSet
  26. //create or replace
  27. //procedure Demo(data out sys_refcursor) as
  28. //begin
  29. // open data for select* from tb_user;
  30. //end Demo;
  31. OracleParameter[] param2 = new OracleParameter[1];
  32. param2[0] = new OracleParameter("data", OracleType.Cursor);
  33. param2[0].Direction = ParameterDirection.Output;
  34. DataSet ds2 = new MyOracleDBHelper().ExecuteDataSet("Demo", param2);
  35. foreach (DataRow item in ds2.Tables[0].Rows)
  36. {
  37. System.Console.WriteLine(string.Format("{0}:{1}", item["USERID"].ToString(), item["USERNAME"].ToString()));
  38. }
  39. }
  40. catch (Exception ex)
  41. {
  42. System.Console.WriteLine(ex.Message);
  43. }
  44. System.Console.Read();
  45. }
  46. }

C#针对Oracle数据库的简单常见操作完成!

发表评论

表情:
评论列表 (有 0 条评论,476人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Oracle数据库-02 操作数据库

    一、创建表空间、自定义用户管理 1、创建表空间 (1)什么是表空间 Oracle数据库包含物理结构和逻辑结构。 数据库的物理结构是指构成数据库的一组操作系统文件。