用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
    评论
好的,我来为您解答。 首先,您需要在C# web窗体中添加Bootstrap和DataTables的引用。然后,您可以使用Oracle.DataAccess或者Oracle.ManagedDataAccess等数据源来获取数据。 以下是一个简单的获取数据的代码示例: ```csharp using Oracle.DataAccess.Client; using System.Data; string connectionString = "Data Source=your_datasource;User ID=your_user_id;Password=your_password"; string query = "SELECT * FROM your_table"; using (OracleConnection connection = new OracleConnection(connectionString)) { OracleCommand command = new OracleCommand(query, connection); connection.Open(); OracleDataAdapter adapter = new OracleDataAdapter(command); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); } ``` 接下来,您可以使用DataTables来显示数据和图片列表。以下是一个简单的代码示例: ```html <table id="datatable" class="table"> <thead> <tr> <th>ID</th> <<th>Name</th> <th>Image</th> </tr> </thead> <tbody> <% foreach (DataRow row in dataTable.Rows) { string image = row["image"].ToString(); %> <tr> <td><%= row["id"] %></td> <td><%= row["name"] %></td> <td><img src="<%= image %>" /></td> </tr> <% } %> </tbody> </table> <script> $(document).ready(function() { $('#datatable').DataTable(); }); </script> ``` 在上面的示例中,我们使用了一个简单的循环来遍历数据表中的每一行,并在每一行中显示ID、名称和图片。我们还使用了DataTables插件来使表格具有交互性和可排序性。 希望这个示例可以帮助您实现您的需求。如果您有其他问题,请随时问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值