当我试图编译我的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
答案 0 :(得分:8)
只是一个想法,但我认为问题在于您在设置参数值时没有使用TextBox_ad.Text。
本质上,您将Web控件作为参数传入,而不是Web控件的文本。它可能需要一个字符串,当它将Web控件转换为字符串时,它会为您提供异常。
答案 1 :(得分:4)
您必须获取文本框的文本。您无法将值设置为文本框对象本身。
答案 2 :(得分:1)
您需要提供更多详细信息,例如您看到错误的哪一行。
invalidCastException was unhandled by user code
听起来更像是运行时错误。请澄清一下。
如果它实际上是一个运行时错误,那么你只需要进行一次类型检查,它会是这样的:
if (var.GetType() == type([expected type like string]))