C#调用存储过程操作oracle数据库中的表

转载自:chwei_cson  http://blog.csdn.net/chwei_cson/article/details/7785536


本文写的是最基本的C#调用存储过程操作数据表的东西,相当基础,如果你已经对存储过程有一定学习,那就不要再浪费时间往下看啦!

首先说一下存储过程的写法(没有相关的判断啊,最最简单的存储过程)

[plain]  view plain copy print ?
  1. --学生信息表;  
  2. create table scott.stumsg  
  3. (  
  4.     stuname varchar(20),  
  5.     stunum char(12)primary key,  
  6.     stusex char(2)  
  7. )  
  8.   
  9. --插入学生信息的存储过程;  
  10. create procedure stu_pro_ins  
  11. (  
  12.    name in varchar,  
  13.    num in char,  
  14.    sex in char  
  15. )  
  16. as  
  17. begin  
  18.    insert into scott.stumsg   
  19.    values(name,num,sex);  
  20.    commit;  
  21. end;  
  22. --修改学生信息的存储过程  
  23. create or replace procedure stu_pro_upd  
  24. (  
  25.    name in varchar,  
  26.    num in char,  
  27.    sex in char  
  28. )  
  29. as  
  30. begin  
  31. update stumsg  
  32. set  
  33. stuname=name,stunum=num,stusex=sex  
  34. where stunum=num;  
  35. commit;  
  36. end;  
  37. ---按学号删除学生信息的存储过程  
  38. create or replace procedure stu_pro_del  
  39. (  
  40.    num in char  
  41. )  
  42. as  
  43. begin  
  44. delete from stumsg  
  45. where stunum=num;  
  46. commit;  
  47. end;  
  48. -- 显示全部的学生信息的存储过程;  
  49. create or replace procedure stu_pro_sel_all  
  50. (result out sys_refcursor)  
  51. as  
  52. begin  
  53. open result for select * from stumsg;  
  54. end;  

C#调用存储过程时的代码(只写了显示和插入的代码,其它的和这差不多一样的,就不写了)

[plain]  view plain copy print ?
  1. //显示所有信息;  
  2.        private void button1_Click(object sender, EventArgs e)  
  3.        {  
  4.            try  
  5.            {  
  6.                OracleConnection conn = new OracleConnection("server=Chweiorc;uid=scott;pwd=Chwei926a");// 建立一个新的连接对象  
  7.                OracleCommand cmd = new OracleCommand("stu_pro_sel_all", conn);  
  8.                // 声明 cmd的类型为 存储类型;  
  9.                cmd.CommandType = CommandType.StoredProcedure;  
  10.   
  11.                OracleParameter p1 = new OracleParameter("result", OracleType.Cursor);  
  12.                p1.Direction = System.Data.ParameterDirection.Output;  
  13.                cmd.Parameters.Add(p1);  
  14.   
  15.                OracleDataAdapter da = new OracleDataAdapter(cmd);  
  16.                DataSet ds = new DataSet();  
  17.                da.Fill(ds);  
  18.                this.dgvShowAll.DataSource = ds.Tables[0];  
  19.            }  
  20.            catch (Exception ex)  
  21.            {  
  22.                MessageBox.Show(ex.Message);  
  23.            }  
  24.        }  
  25.   
  26.        // 像数据库中插入数据;  
  27.        private void button2_Click(object sender, EventArgs e)  
  28.        {  
  29.            string stuName = tb_name.Text.Trim();  
  30.            string stuNum = tb_num.Text.Trim();  
  31.            string stuSex = tb_sex.Text.Trim();  
  32.   
  33.            MessageBox.Show(stuSex.Length.ToString());  
  34.   
  35.            //连接字符串  
  36.            string connStr = "Data Source=Chweiorc;User ID=scott;Password=Chwei926a";  
  37.            OracleConnection connection = new OracleConnection(connStr);  
  38.            OracleCommand cmd = connection.CreateCommand();  
  39.            
  40.            cmd.CommandType = CommandType.StoredProcedure; // 指明用调用存储过程的方式来操作数据库;  
  41.            cmd.CommandText = "stu_pro_ins";  
  42.   
  43.            cmd.Parameters.AddWithValue("name", stuName);  
  44.            cmd.Parameters.AddWithValue("num",stuNum);  
  45.            cmd.Parameters.AddWithValue("sex",stuSex);  
  46.   
  47.            connection.Open();  
  48.            try  
  49.            {  
  50.                MessageBox.Show(cmd.ExecuteNonQuery().ToString());  
  51.            }  
  52.            catch (Exception ex)  
  53.            {  
  54.                MessageBox.Show(ex.Message);  
  55.            }  
  56.            finally  
  57.            {  
  58.                connection.Close();  
  59.                cmd.Dispose();  
  60.                MessageBox.Show("更新数据完成~~~~");  
  61.            }  
  62.        }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值