0

以下のコードは、「入力文字列が正しい形式ではありませんでした」というエラーを示しています

Microsoft.Practices.EnterpriseLibrary.Data.Database Obj = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase("InvoiceConString");
    //Create your DbCommand
    DbCommand com =Obj.GetStoredProcCommand("StoredProcedure2", InvoiceComments, Convert.ToDateTime(InvoiceDate), ProductName, Description, Convert.ToInt32(Qty), Convert.ToInt32(Amount), Convert.ToInt32(TaxAmount), Convert.ToInt32(paidAmount), CustomerName, CustomerAddress, Convert.ToInt32(UnitCost), Convert.ToInt32(InvoiceReference));
    //Execute
   int rows =com.ExecuteNonQuery();
   con.Close();
    return "data Updated Successfully";

および以下のような私の接続文字列

static string conStr = ConfigurationManager.ConnectionStrings["InvoiceConString"].ConnectionString;

しかし、Microsoft.Practices.EnterpriseLibrary.Data.Database を使用せずにレコードを更新すると、エラーは表示されず、レコードは簡単に更新されます。

注:-変数の変換に間違いはありません。同じ変数を使用してレコードを更新しているため、以下のように更新すると

  SqlCommand com = new SqlCommand("StoredProcedure2", con);
    com.CommandType = CommandType.StoredProcedure;
    com.Parameters.Add("@InvoiceComments", SqlDbType.VarChar, 150).Value = InvoiceComments;
    com.Parameters.Add("@InvoiceDate", SqlDbType.DateTime).Value = Convert.ToDateTime(InvoiceDate);
    com.Parameters.Add("@ProductName", SqlDbType.VarChar, 50).Value = ProductName;
    com.Parameters.Add("@Description", SqlDbType.VarChar, 150).Value = Description;
    com.Parameters.Add("@Qty", SqlDbType.Int).Value = Convert.ToInt32(Qty);
    com.Parameters.Add("@Amount", SqlDbType.Int).Value = Convert.ToInt32(Amount);
    com.Parameters.Add("@TaxAmount", SqlDbType.Int).Value = Convert.ToInt32(TaxAmount);
    com.Parameters.Add("@PaidAmount", SqlDbType.Int).Value = Convert.ToInt32(paidAmount);
    com.Parameters.Add("@CustomerName", SqlDbType.VarChar, 50).Value = CustomerName;
    com.Parameters.Add("@CustomerAddress", SqlDbType.VarChar, 150).Value = CustomerAddress;
    com.Parameters.Add("@UnitCost", SqlDbType.Int).Value = Convert.ToInt32(UnitCost);
    com.Parameters.Add("@InvoiceReference", SqlDbType.Int).Value = Convert.ToInt32(InvoiceReference);
     con.Open();
    com.ExecuteNonQuery();
    con.Close();                                                                                   

上記のコードは問題なく動作しています。

4

0 に答える 0