簡體   English   中英

如何使用文本框編輯/更新數據庫中的記錄?

[英]How do I edit/update records from a database using textbox?

我有問題,請您幫忙。 我的頁面上有一個編輯按鈕和文本框。 我想將數據庫中的一條記錄編輯到這些文本框中。 我編寫了以下代碼,當我單擊“編輯”按鈕時,我得到了結果。 結果加載到我的文本框中。 但是,當我第二次嘗試再次運行具有相同ID的頁面時,就會出現此錯誤“指定的轉換無效”。 怎么了 我用int ID = 3; 在此示例中獲得第三條記錄

受保護的void Button2_Click(對象發送者,EventArgs e)

{

DataClassesDataContext cxt =新的DataClassesDataContext(); USER_TABLE aChar = cxt.USER_TABLEs.Single(c => c.ID == 3); //得到一條記錄

            fname2.Text = aChar.FIRST_NAME;
            lname2.Text = aChar.LAST_NAME;
            pob2.Text = aChar.PLACE_OF_BIRTH;
            pom2.Text = aChar.PLACE_OF_MARRIAGE;
            education2.Text = aChar.EDUCATION;
            occupation2.Text = aChar.OCCUPATION;
            pod2.Text = aChar.PLACE_OF_DEATH;
            String str = aChar.DATE_OF_BIRTH.ToString();
           String str1 = aChar.DATE_OF_MARRIAGE.ToString();
            String str2 = aChar.DATE_OF_DEATH.ToString();

為什么在事件處理程序代碼中執行if (!Page.IsPostBack)

我想說的是,通常只有在回發后才引發一個事件...

除了PageLoad之外,我很少看到IsPostBack用於其他任何東西。

您需要明確保存對上下文的更改

cxt.SubmitChanges();

似乎在獲取對象(使用Single)時會收到指定的強制轉換異常。 您可能需要檢查對象模型和數據庫之間的數據類型,以確保在使用字符串的數據庫中對象不期望數字(反之亦然)。 另外,檢查對象和數據庫列的可空性。 綁定時,LINQ to SQL不支持隱式類型轉換。

至於為什么它對第一個請求有效,而對第二個請求無效,為什么兩個請求之間發生了什么變化? 另外,兩個請求之間的上下文是否仍然有效? 當第二次請求相同的ID時,Single會緩存獲取的值,並使查詢管道短路,因此,使用Single時,如果上下文保持活動狀態,則應該只看到一個數據庫請求。 嘗試使用ctx.Log = Console.Out記錄您的數據庫請求,或者使用SQL Profiler(如果有)進行記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM