用OracleDataAdapter将DataTable写入Oracle数据库

今天用OracleDataAdapter把DataTable写入数据库研究了一天啊,头都晕了,老是报错:ORA-01008: 并非所有变量都已绑定,.........................现在好了,原来是OracleParameter少写了最后一项数据源列名,现将成果展示如下:

using System;
using System.Configuration;
using System.Data;
using System.Data.OracleClient;
using System.Collections;

......

......

......

 

   public static int ExecuteDataTable(DataTable dt)
        {

            //创建一个连接对象
            using (OracleConnection connection = new OracleConnection(ConnectionString))
            {
                OracleDataAdapter OracleAdapter = new OracleDataAdapter();
                //#region  查询
                //OracleAdapter.SelectCommand = new OracleCommand();
                //OracleAdapter.SelectCommand.CommandType = CommandType.Text;
                //OracleAdapter.SelectCommand.CommandText = "SELECT JSDM,JSMC,JSMS,SCBS,JSLXDM FROM HT_YHJS  ";
                //OracleAdapter.SelectCommand.Connection = connection;
                //#endregion
               

                #region  添加
                string insertSql = "INSERT INTO HT_YHJS (JSDM,JSMC,JSMS,JSLXDM) VALUES (:JSDM,:JSMC,:JSMS,:JSLXDM)";
                OracleAdapter.InsertCommand = new OracleCommand();
                OracleAdapter.InsertCommand.CommandType = CommandType.Text;
                OracleAdapter.InsertCommand.CommandText = insertSql;
                OracleParameter[] insertParms = {
                    new OracleParameter(":JSDM", OracleType.VarChar, 6, "JSDM"),   
                    new OracleParameter(":JSMC", OracleType.VarChar, 20, "JSMC"),   
                    new OracleParameter(":JSMS", OracleType.VarChar, 120, "JSMS"),
                    new OracleParameter(":JSLXDM", OracleType.Char, 10, "JSLXDM")   
                };
                OracleAdapter.InsertCommand.Parameters.AddRange(insertParms);
                OracleAdapter.InsertCommand.Connection = connection;
                #endregion
                #region  更新
                string updateSql = "UPDATE HT_YHJS SET JSMC=:JSMC, JSMS=:JSMS, JSLXDM=:JSLXDM WHERE JSDM=:JSDM";
                OracleAdapter.UpdateCommand = new OracleCommand();
                OracleAdapter.UpdateCommand.CommandType = CommandType.Text;
                OracleAdapter.UpdateCommand.CommandText = updateSql;
                OracleParameter[] updateParms = {   
                    new OracleParameter(":JSMC", OracleType.VarChar, 20 , "JSMC"),  
                    new OracleParameter(":JSMS", OracleType.VarChar, 120, "JSMS"),
                    new OracleParameter(":JSLXDM", OracleType.Char, 10, "JSLXDM"), 
                    new OracleParameter(":JSDM", OracleType.VarChar, 6, "JSDM")
                };
                updateParms[0].IsNullable = false;
                OracleAdapter.UpdateCommand.Parameters.AddRange(updateParms);
                OracleAdapter.UpdateCommand.Connection = connection;
                #endregion
                #region  删除
                string deleteSql = "DELETE FROM HT_YHJS WHERE JSDM=:JSDM";
                OracleParameter[] deleteParms = {
                        new OracleParameter(":JSDM", OracleType.VarChar, 6,"JSDM")
                };
                OracleAdapter.DeleteCommand = new OracleCommand();
                OracleAdapter.DeleteCommand.CommandType = CommandType.Text;
                OracleAdapter.DeleteCommand.CommandText = deleteSql;
                OracleAdapter.DeleteCommand.Parameters.AddRange(deleteParms);
                OracleAdapter.DeleteCommand.Connection = connection;
                #endregion
                
                int r = OracleAdapter.Update(dt);
                dt.AcceptChanges();

                return r;
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值