用户代码未处理invalidCastException

时间:2009-12-20 16:59:50

标签: c# asp.net sql-server

当我试图编译我的asp.net网站项目时,我收到了这个错误。

  

用户代码未处理invalidCastException

protected void Button1_Click(object sender, EventArgs e)
{

    SqlCommand cmd = new SqlCommand("Sp_Kullanici_Ekle ", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@ad", SqlDbType.NChar, 50).Value = TextBox_ad;
    cmd.Parameters.Add("@soyad", SqlDbType.NChar, 50).Value = TextBox_soyad;
    cmd.Parameters.Add("@tel", SqlDbType.NChar, 50).Value = TextBox_no;
    cmd.Parameters.Add("@adres", SqlDbType.NChar, 50).Value = TextBox_adres;
    cmd.Parameters.Add("@email", SqlDbType.NChar, 50).Value = TextBox_mail;
    cmd.Parameters.Add("@sifre", SqlDbType.NChar, 50).Value = TextBox_sifre;
    cmd.Parameters.Add("@kredikart", SqlDbType.NChar, 50).Value = TextBox_kredikart;

    con.Open();
    cmd.ExecuteNonQuery(); // this step gives error
    con.Close();

}

是sql端

  ALTER PROCEDURE [dbo].[Sp_Kullanici_Ekle] 
  (
   @ad nvarchar(50),
   @soyad nvarchar(50),
   @tel nvarchar(50),
   @adres nvarchar(50),
   @email nchar(50),
   @sifre nvarchar(50),
   @kredikart nvarchar(50)
 )
AS
BEGIN
insert into kullanici(kullanici_ad,kullanici_soyad,kullanici_tel,kullanici_adres,
kullanici_email,kullanici_sifre,kullanici_kredikart)
values(@ad,@soyad,@tel,@adres,@email,@sifre,@kredikart)

END

3 个答案:

答案 0 :(得分:8)

只是一个想法,但我认为问题在于您在设置参数值时没有使用TextBox_ad.Text。

本质上,您将Web控件作为参数传入,而不是Web控件的文本。它可能需要一个字符串,当它将Web控件转换为字符串时,它会为您提供异常。

答案 1 :(得分:4)

您必须获取文本框的文本。您无法将值设置为文本框对象本身。

答案 2 :(得分:1)

  1. 您需要提供更多详细信息,例如您看到错误的哪一行。

  2. invalidCastException was unhandled by user code听起来更像是运行时错误。请澄清一下。

  3. 如果它实际上是一个运行时错误,那么你只需要进行一次类型检查,它会是这样的:

    if (var.GetType() == type([expected type like string]))