AS400 C # .net вставка новых проблем записи - PullRequest
4 голосов
/ 23 ноября 2008

Я пытаюсь создать программу на C # .net, которая работает как субфайл RPG на AS400.

Работает общая часть подфайла. Я могу отображать, а затем редактировать и обновлять существующие записи.

Я взорвался в своем коде, где я пытаюсь вставить новую запись. Взрыв на

cmd.ExecuteNonQuery ();

Если вы хотите увидеть, как это работает без вставки, перейдите на

http://144.162.90.78/thomas/

Посмотрите на Website1a

Вот код.

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);
    }
}

Любая помощь будет принята с благодарностью.

Thomas

1 Ответ

3 голосов
/ 24 ноября 2008

В

есть еще один вариант
cmd.Parameters["@cusnum"].Value = field;

для указания типа поля. Используйте

cmd.Parameters.Add("@cusnum", iDB2DbType.iDB2Decimal).Value = Convert.ToDecimal(field);

вместо этого. Это должно правильно преобразовать ваши типы данных. Вам нужно изменить iDB2Decimal на соответствующий тип поля, если не десятичное.

...