Я пытаюсь создать программу C# .net, которая работает как подфайл RPG на AS400.
Пусть работает общая часть подфайла. Я могу отображать, а затем редактировать и обновлять существующие записи.
Я взрываюсь в своем коде, где пытаюсь вставить новую запись. Взрыв на
cmd.ExecuteNonQuery ();
Если вы хотите увидеть, как это работает без вставки, перейдите к
Посмотрите на веб-сайт1a
Вот код.
using IBM.Data.DB2.iSeries;
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class WebForm3 : System.Web.UI.Page
{
protected void btnBack_Click(object sender, EventArgs e)
{
Server.Transfer("WebForm1a.aspx");
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
ConnectionStringSettingsCollection cssc =
ConfigurationManager.ConnectionStrings;
String connString = cssc["FTWAS400"].ToString();
iDB2Connection conn = new iDB2Connection(connString);
conn.Open();
iDB2Command cmd = new iDB2Command(
"insert into tburrows.qcustcdt (cusnum, init, lstnam, street, city, state, zipcod, cdtlmt, chgcod, baldue, cdtdue) values (@cusnum, @init, @lstnam, @street, @city, @state, @zipcod, @cdtlmt, @chgcod, @baldue, @cdtdue)", conn);
cmd.DeriveParameters();
cmd.Parameters["@cusnum"].Value = Request["txtCUSNUM"];
cmd.Parameters["@init" ].Value = Request["txtINIT"];
cmd.Parameters["@lstnam"].Value = Request["txtLSTNAM"];
cmd.Parameters["@street"].Value = Request["txtSTREET"];
cmd.Parameters["@city"].Value = Request["txtCITY"];
cmd.Parameters["@state"].Value = Request["txtSTATE"];
cmd.Parameters["@zipcod"].Value = Request["txtZIPCOD"];
cmd.Parameters["@cdtlmt"].Value = Request["txtCDTLMT"];
cmd.Parameters["@chgcod"].Value = Request["txtCHGCOD"];
cmd.Parameters["@baldue"].Value = Request["txtBALDUE"];
cmd.Parameters["@cdtdue"].Value = Request["txtCDTDUE"];
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
btnBack_Click(sender, e);
}
}
Любая помощь будет принята с благодарностью.
Томас
Джон: Я получаю «исключение OverflowException, не обработанное кодом пользователя». Параметр не входит в диапазон допустимых значений ». В советах по устранению неполадок я получаю« Убедитесь, что вы не делите на ноль ». Надеюсь, это поможет. Томас
Полный код для этого находится в Http://144.162.90.78/thomas/notes
Я не могу показать папку заметок, но если посмотреть на website2 и webform1a, вы увидите, что я делаю.
Майк: Можете ли вы вызвать мне по номеру 469 693 2533. Пытался отправить вам электронное письмо из того, что я нашел на вашем веб-сайте. Предложение «возможно, я сделал это неправильно» теперь приводит к тому, что сегмент кода не компилируется. Thomas [email protected] PS: Я могу заплатить, если вы можете мне помочь.
Мне не нужно платить. Это сообщество, в котором мы работаем вместе. Когда-нибудь у меня может возникнуть вопрос, на который вы сможете ответить, и тогда вы мне заплатите.





Есть еще один вариант в
cmd.Parameters["@cusnum"].Value = field;
чтобы указать тип поля. Использовать
cmd.Parameters.Add("@cusnum", iDB2DbType.iDB2Decimal).Value = Convert.ToDecimal(field);
вместо. Это должно правильно преобразовать ваши типы данных. Вам нужно будет изменить iDB2Decimal на правильный тип поля, если не десятичный.
Не используйте cmd.DeriveParameters () с этим решением!
Когда вы говорите, что "взрывается", что именно вы имеете в виду? Я ожидаю, что возникнет исключение, и детали этого исключения будут очень важны. Кстати, знаете ли вы об операторах "using", чтобы избежать явного вызова cmd.Dispose () и conn.Close ()?