2009-12-20 125 views
1

當我試圖編譯我的asp.net網站項目,我得到了這個錯誤。invalidCastException由用戶代碼未處理

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 

回答

4

你必須得到文本框中的文本。您不能將該值設置爲文本框對象本身。

8

只是一個想法,但我認爲問題是您在設置參數值時沒有使用TextBox_ad.Text。

實質上,您將Web控件作爲參數傳遞,而不是Web控件的文本。它可能期望一個字符串,當它將Web控件轉換爲字符串時,它會給你這個異常。

+0

我做到了。然後我得到了這個。 INSERT語句與FOREIGN KEY約束「FK_kullanici_kayit」衝突。數據庫「票據」,表「dbo.kayit」,列「kayit_id」發生衝突。 該聲明已被終止。 – ozkank 2009-12-20 17:08:01

+5

好,那麼你已經解決了你所問的問題。現在你有一個新問題。 – 2009-12-20 17:13:32

+0

同意。這已經解決了這個問題。我懷疑,如果你現在查看你的表格,你會發現你已經有了一個具有相同ID的行。 – 2009-12-20 17:17:11

1
  1. 您需要提供更多細節,比如您在哪條線上看到錯誤。

  2. invalidCastException was unhandled by user code聽起來更像是運行時錯誤。請澄清這一點。

  3. 如果它實際上是一個運行時錯誤比你只需要簡單地把一個類型的支票會去是這樣的:

    if (var.GetType() == type([expected type like string])) 
    
相關問題