[转]在.NET中调用Oracle存储过程经验总结(5)

 

前台调用代码如下,有点繁琐,请耐心阅读:

     string connectionString = "Data Source=YXZHANG;User ID=YXZHANG;Password=YXZHANG";

     string queryString = "TestPackage.SelectRecords";

     OracleConnection cn = new OracleConnection(connectionString);

     OracleCommand cmd = new OracleCommand(queryString,cn);

     cmd.CommandType = CommandType.StoredProcedure;

     cmd.Parameters.Add("ret_cursor",OracleType.Cursor);

     cmd.Parameters["ret_cursor"].Direction = ParameterDirection.Output;

    

     try

     {

          cn.Open();

          OracleDataAdapter da = new OracleDataAdapter(cmd);

          DataSet ds = new DataSet();

          da.Fill(ds,"TestTable");

          cn.Close();

          int count = ds.Tables["TestTable"].Rows.Count;

         

          /*打印原始记录*/

          Console.WriteLine("Old Records is:");

          for( int i = 0;i <= count - 1;i++ )

         {

              string id = ds.Tables["TestTable"].Rows[i]["ID"].ToString();

              string name = ds.Tables["TestTable"].Rows[i]["NAME"].ToString();

              string age = ds.Tables["TestTable"].Rows[i]["AGE"].ToString();

 

              Console.WriteLine("Record {0}:",i+1);

              Console.WriteLine("ID:{0}"tName:{1}"tAge:{2}"n",id,name,age);

         }

        

         da.SelectCommand = cmd;     //为DataAdapter指定SelectCommand

 

         OracleCommand updateCmd = new OracleCommand("TestPackage.UpdateRecords",cn);

         updateCmd.CommandType = CommandType.StoredProcedure;

         updateCmd.Parameters.Add("id_in",OracleType.Number,3,"ID");

         updateCmd.Parameters.Add("newName",OracleType.VarChar,20,"NAME");

         updateCmd.Parameters.Add("newAge",OracleType.Number,3,"AGE");

         da.UpdateCommand = updateCmd;        //为DataAdapter指定UpdateCommand

 

         OracleCommand deleteCmd = new OracleCommand("TestPackage.DeleteRecords",cn);

         deleteCmd.CommandType = CommandType.StoredProcedure;

         deleteCmd.Parameters.Add("id_in",OracleType.Number,3,"ID");

         da.DeleteCommand = deleteCmd;        //为DataAdapter指定DeleteCommand

 

         OracleCommand insertCmd = new OracleCommand("TestPackage.InsertRecords",cn);

          insertCmd.CommandType = CommandType.StoredProcedure;

         insertCmd.Parameters.Add("name_in",OracleType.VarChar,20,"NAME");

         insertCmd.Parameters.Add("age_in",OracleType.Number,3,"AGE");

         da.InsertCommand = insertCmd;        //为DataAdapter指定InsertCommand

 

         DataTable newTable = ds.Tables["TestTable"];

        

         /*修改第一条记录*/

         newTable.Rows[0]["AGE"] = 22;

         newTable.Rows[0]["NAME"] = "John";

        

         /*删除一条记录*/

         newTable.Rows[2].Delete();

 

         /*插入一条记录*/

         DataRow newRow = newTable.NewRow();

         newRow["NAME"] = "Bob";

         newRow["AGE"] = 99;

         newTable.Rows.Add(newRow);

 

         cn.Open();

         da.Update(newTable);       //将更改更新到数据库

         newTable.Clear();           //清空DataTable

         da.Fill(newTable);           //获取更改后的数据

         cn.Close();

 

         /*打印新记录*/

         Console.WriteLine("New Records is:");

         for( int i = 0;i <= newTable.Rows.Count - 1;i++ )

         {

              string id = newTable.Rows[i]["ID"].ToString();

              string name = newTable.Rows[i]["NAME"].ToString();

              string age = newTable.Rows[i]["AGE"].ToString();

 

              Console.WriteLine("Record {0}:",i+1);

              Console.WriteLine("ID:{0}"tName:{1}"tAge:{2}"n",id,name,age);

         }

     }

     catch( OracleException ex )

     {

          Console.WriteLine("Exception occurred!");

          Console.WriteLine("The exception message is:{0}",ex.Message.ToString());

     }

     finally

     {

         Console.WriteLine("------------------End-------------------");

}

转载于:https://www.cnblogs.com/seven911/archive/2008/10/20/1315519.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值