台灣最大程式設計社群網站
線上人數
1852
 
會員總數:245964
討論主題:189547
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 將頁面資料submit到資料庫後,同一個頁面再submit一次會出錯
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
將頁面資料submit到資料庫後,同一個頁面再submit一次會出錯
價值 : 0 QP  點閱數:2724 回應數:13
樓主

Rake
初學者
18 5
4 9
發送站內信

請問我的頁面在新增到資料庫資後,在原 來的頁面在重新填入資料之後,再一次按下確定鍵後,會出現這樣的錯誤訊息The ConnectionString property has not been initialized.在conn.open那裡變成紅字,請問各位,為什麼會這樣呢?要如何解決呢?謝謝
本篇文章發表於2003-11-12 12:30
1樓
回應

Eddie
檢舉此回應
你的new SqlConnection(XXXX)裡的XXXX給的值有問題...
本篇文章回覆於2003-11-12 12:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Rake
檢舉此回應
第一次將頁面資料寫進去時會成功,但是同一個頁面再重新輸入資料之後,第二次按下submit鍵後就會出現錯誤訊息,這樣是因為new sqlconnection(xxxx)內的xxxx的值錯誤嗎?如果是這樣的話,應該連第一次都沒有辦法成功才對........請問,謝謝
本篇文章回覆於2003-11-12 12:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Eddie
檢舉此回應
可以把你的程式po出來看看嗎?!
本篇文章回覆於2003-11-12 12:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Rake
檢舉此回應
 '新增資料到資料庫---------------------------------------------------------------------------------

        Dim myins As String = "insert into T_JOB_DISPATCH(Job_Guid,Insert_Date,Job_Owner,Dispatch_Date,Job_Description,Job_type,Executer,Dep_Code_Execute,Inspection_Date,Daily_Inspect,Weekly_Inspect,Monthly_inspect,Additional,Update_Personnel) values(@jobguild,@insertdate,@jobowner,@dispatchdate,@jobdes,@jobtype,@executer,@depexecute,@insdate,@daily,@weekly,@monthly,@additional,@Update_Personnel)"
        Dim cmd As SqlCommand = New SqlCommand(myins, conn)

        conn.Open()


        '經由表單輸入會存到資料庫的欄位資料----------------------------------------------------------------
        cmd.Parameters.Add(New SqlParameter("@jobguild", SqlDbType.VarChar)).Value = "MWK-" & txtno.Text                                      '設定MWK的編號
        cmd.Parameters.Add(New SqlParameter("@jobowner", SqlDbType.VarChar)).Value() = Me.ddl_order.SelectedItem.Text                         '設定交辦人姓名 
        cmd.Parameters.Add(New SqlParameter("@dispatchdate", SqlDbType.DateTime)).Value = Me.ddl_order_year.SelectedItem.ToString & "/" & Me.ddl_order_month.SelectedItem.ToString & "/" & Me.ddl_order_day.SelectedItem.ToString     '設定交辦日期
        cmd.Parameters.Add(New SqlParameter("@jobdes", SqlDbType.VarChar)).Value = txtdetail.Text                                             '設定工作事項細節
        cmd.Parameters.Add(New SqlParameter("@jobtype", SqlDbType.VarChar)).Value = RadioButtonList1.SelectedItem.Value                       '設定工作的類型R/D
        cmd.Parameters.Add(New SqlParameter("@executer", SqlDbType.VarChar)).Value = Me.ddl_ordered.SelectedItem.Text                         '設定被交辦人姓名  
        cmd.Parameters.Add(New SqlParameter("@depexecute", SqlDbType.Int)).Value = Me.ddldep.SelectedIndex                                    '設定被交辦人部門         
        cmd.Parameters.Add(New SqlParameter("@insdate", SqlDbType.DateTime)).Value = Me.ddlcheckedyear.SelectedItem.ToString & "/" & Me.ddlcheckedmonth.SelectedItem.ToString & "/" & Me.ddlcheckedday.SelectedItem.ToString          '設定指檢日日期
        cmd.Parameters.Add(New SqlParameter("@daily", SqlDbType.Bit)).Value = CheckBox1.Checked                                               '設定是否為日檢       
        cmd.Parameters.Add(New SqlParameter("@weekly", SqlDbType.VarChar)).Value = Me.weeklycheck.SelectedItem.Value                          '設定週檢的時間
        cmd.Parameters.Add(New SqlParameter("@monthly", SqlDbType.VarChar)).Value = Me.monthlycheck.SelectedItem.Value                        '設定月檢的時間
        cmd.Parameters.Add(New SqlParameter("@additional", SqlDbType.VarChar)).Value = Me.txtmemo.Text                                        '設定備註事項
        '--------------------------------------------------------------------------------------------------------
        cmd.Parameters.Add(New SqlParameter("@insertdate", SqlDbType.DateTime)).Value = Date.Now                                              '設定輸入日期
        cmd.Parameters.Add(New SqlParameter("@Update_Personnel", SqlDbType.VarChar)).Value = Me.ddl_update_personnel.SelectedItem.Text         '設定填表人

        '將資料寫進資料庫
        cmd.ExecuteNonQuery()

        '關閉連線
        conn.Close()
        conn.Dispose()
        cmd.Dispose()

    End Sub

另外這是放在模組中

'設定一個公共的連線-----------------------------------------------------------
    Public sqlconn As String = "data source=MONITOR-2;initial catalog=insrea; user id=sa; password=;"
    Public conn As SqlConnection = New SqlConnection(sqlconn)
    '-------------------------------------------------------------------------------


本篇文章回覆於2003-11-12 12:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Eddie
檢舉此回應
您說下面這段程式是放在模組裡?!...那它在那裡被載入?!
設定一個公共的連線-----------------------------------------------------------
    Public sqlconn As String = "data source=MONITOR-2;initial catalog=insrea; user id=sa; password=;"
    Public conn As SqlConnection = New SqlConnection(sqlconn)
    '-----------------------------------------------------------------------------
本篇文章回覆於2003-11-12 12:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Rake
檢舉此回應
感謝您的回應
conn.open是放在button_click的事件中去執行的,在模組的設定都是用pblic設定的,不知道這樣設有沒有什麼問題呢?

本篇文章回覆於2003-11-12 13:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

Eddie
檢舉此回應
不用下conn.Dispose()....這樣應該就行了...
本篇文章回覆於2003-11-12 13:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Rake
檢舉此回應
問題迎刃而解,感謝edit的協助,為什麼問題會出在這裡呢?事什麼原因呢?謝謝
本篇文章回覆於2003-11-12 14:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Eddie
檢舉此回應
因為你在同一個頁面重覆按下確定這樣的動作..它只New了一個
SqlConnection的實體...而你下了Dispose的動作是release掉
這個SqlConnection...所以在你下次要用的時候它就會警告你
尚未初始化....
本篇文章回覆於2003-11-12 14:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

Stanley
檢舉此回應
你的資料庫連線確定是在Button的事件裡面才Dim的嗎?
你每按下Button一次就會New 一條連線嗎?
如果是這樣你New 一條連線使用完畢後,就必須要將其資源清除..
再加上一個conn = Nothing
本篇文章回覆於2003-11-12 14:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

Rake
檢舉此回應
感謝eddie還有stanley的說明,這兩種方法我都會去試試看,發現那裡有什麼不同,感恩拉~~~~
本篇文章回覆於2003-11-12 14:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

Rake
檢舉此回應
結論應該是:
如果連線資訊全部寫在同一個事件裡,則重複submit便不會發生問題,如果連線資訊(例如把dim conn as sqlconnection=new sqlconnection(sqlconn)放在模組中當成公用連線時,就不要加上conn.dispose的指令,應該就不會發生問題了,這是我試的結果
本篇文章回覆於2003-11-12 14:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

Stanley
檢舉此回應
.Close()    將連線結束
.Dispose() 清除記憶體的值
 = Nothing 清除該變數的所有資源
本篇文章回覆於2003-11-12 16:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.