asp.net – C# – 一次将多个记录插入AS400
发布时间:2020-12-16 07:18:43 所属栏目:asp.Net 来源:网络整理
导读:我有这样的问题: 1.我使用C#ASP .Net从 MySQL检索数据. – 完成 – 2.来自1号的所有数据将被插入AS400的表格中. – 我在这一步上遇到错误 – 错误消息说ERROR [42000] [IBM] [System i Access ODBC Driver] [DB2 for i5 / OS] SQL0104 – Token;无效.有效令
我有这样的问题:
1.我使用C#ASP .Net从 MySQL检索数据. – 完成 – 2.来自1号的所有数据将被插入AS400的表格中. – 我在这一步上遇到错误 – 错误消息说ERROR [42000] [IBM] [System i Access ODBC Driver] [DB2 for i5 / OS] SQL0104 – Token;无效.有效令牌:< END-OF-STATEMENT> ..我确实使用分号将查询彼此分开,但这是不允许的.我谷歌搜索,但我找不到解决方案. 我的问题是< END-OF-STATEMENT>该错误消息的手段..? 这是我的源代码. private static void doInsertDOCADM(MySqlConnection conn) { // Get Temporary table String query = "SELECT * FROM TB_T_DOC_TEMPORARY_ADM"; DataTable dt = CSTDDBUtil.ExecuteQuery(query); OdbcConnection as400Con = null; as400Con = CSTDDBUtil.GetAS400Connection(); as400Con.Open(); if (dt != null && dt.Rows.Count > 0) { int counter = 1,maxInsertLoop = 50; using (OdbcCommand cmd = new OdbcCommand()) { cmd.Connection = as400Con; foreach (DataRow dr in dt.Rows) { cmd.CommandText += "INSERT INTO DCDLIB.WDFDOCQ VALUES " + "(?,?,?);"; cmd.Parameters.Add("1",OdbcType.VarChar).Value = dr["PROD_MONTH"].ToString(); cmd.Parameters.Add("2",OdbcType.VarChar).Value = dr["NEW_MAIN_DEALER_CD"].ToString(); cmd.Parameters.Add("3",OdbcType.VarChar).Value = dr["MODEL_SERIES"].ToString(); cmd.Parameters.Add("4",OdbcType.VarChar).Value = dr["MODEL_CD"].ToString(); if (counter < maxInsertLoop) { counter++; } else { counter = 1; cmd.ExecuteNonQuery(); cmd.CommandText = ""; cmd.Parameters.Clear(); } } if (counter > 1) cmd.ExecuteNonQuery(); } } 注意:我使用这种方式(首先收集一些查询,然后执行这些查询)以提高应用程序的性能. 解决方法
正如Clockwork-Muse指出的那样,问题是你只能在命令中运行一个SQL语句. iSeries服务器不会立即处理多个语句.
如果iSeries服务器正在运行V6R1或更高版本,则可以使用块插入来插入多行.我不确定您是否可以通过ODBC驱动程序执行此操作,但由于您具有Client Access,因此您应该能够安装iSeries ADO.NET驱动程序. ADO.NET iSeries驱动程序和ODBC驱动程序之间没有太多区别,但使用ADO.NET可以访问iSeries特定的功能. 使用ADO.NET驱动程序,多个插入变得简单: using (iDB2Connection connection = new iDB2Connection(".... connection string ...")) { // Create a new SQL command iDB2Command command = new iDB2Command("INSERT INTO MYLIB.MYTABLE VALUES(@COL_1,@COL_2",connection); // Initialize the parameters collection command.DeriveParameters(); // Insert 10 rows of data at once for (int i = 0; i < 20; i++) { // Here,you set your parameters for a single row command.Parameters["@COL_1"].Value = i; command.Parameters["@COL_2"].Value = i + 1; // AddBatch() tells the command you're done preparing a row command.AddBatch(); } // The query gets executed command.ExecuteNonQuery(); } } IBM还提供了一些使用VB6和ODBC进行块插入的参考代码,但我不确定它是否可以轻松移植到.NET:http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frzaik%2Frzaikextfetch.htm 希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET CORE中使用SESSION
- asp.net-mvc-4 – 如何让{controller} / {id} / {action}在
- asp.net-mvc-3 – 具有多个强类型部分视图的MVC 3 Razor表格
- asp.net-mvc – 在MVC3中下载Azure Blob文件
- asp.net-mvc-4 – SimpleMembershipProvider:webpages_Mem
- ASP.NET AJAX Call Web Service , Return JSON Format Stri
- asp.net – 从互联网上打开excel文件会打开一个空白的Excel
- ASP.net 2.0版是什么意思?
- dw通过iis运行asp网站总结
- asp.net – Sitecore:打开HTML缓存阻止回发行为
推荐文章
站长推荐
- asp.net – 使用GhostScript将PDF转换为服务器上
- asp.net – “’Microsoft.Jet.OLEDB.4.0’提供程
- asp.net-mvc – 在kendo模板中渲染剑道控件(Razo
- asp.net – 如何从url中删除returnurl?
- ASP.NET检测到有潜在危险的 Request.Form 值解决
- .NetCore技术研究-ConfigurationManager在单元测
- asp.net – 恶意用户可以修改viewstate吗?
- asp.net – Web API和Upserts
- 使用UpdatePanel单击按钮后更新ASP.NET标签
- asp.net-mvc – 直接下载链接到ASP.NET MVC 5 fo
热点阅读