2012-10-19 139 views
-2

當我寫這個代碼中插入一行到數據庫:異常插入一行到數據庫

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["earchConnectionString"].ConnectionString); 
//string insCmd = "Insert into [node] (title, parent_id, oid, display, linkById, customLinks, contentType) values (@title, @parent_id, @oid, @display, @linkById, @customLinks, @contentType)"; 
string insCmd = "Insert into [node] (title) values (@title)"; 
SqlCommand insertUser = new SqlCommand(insCmd, con); 
insertUser.Parameters.AddWithValue("@title", TextBoxTitle.Text); 

try 
{ 
    insertUser.ExecuteNonQuery(); 
    con.Close(); 
    Response.Redirect("addNode.aspx"); 
    Label1.Text = "update success"; 

} 
catch (Exception er) 
{ 
    Label1.Text = er.StackTrace; 
} 

堆棧跟蹤:

at System.Data.SqlClient.SqlConnection.GetOpenConnection(String method) 
at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command) 
at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async) 
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 
at Admin_addNode.Button1_Click(Object sender, EventArgs e) 
in c:\inetpub\web1\Admin\addNode.aspx.cs:line 52 

任何人都知道出了什麼問題?

+1

我們可以有例外類型和消息以及堆棧跟蹤前第一? – Rawling

+2

_「任何人都知道問題出在哪裏?」 - 是的,你必須在你的catch子句中設置斷點並查找異常。現在只打印相關的堆棧跟蹤,但不顯示實際的異常。設置一個斷點,檢查異常並在網上搜索它。如果您無法找到解決方案,請提出一個關於如何解決問題的問題,展示您嘗試過的方法。 – CodeCaster

回答

4

呼叫con.Open()執行ExecuteNonQuery()

con.Open(); 
insertUser.ExecuteNonQuery(); 
+0

耶〜謝謝,我太累了 – hkguile

+0

不客氣@hkinterview!順便說一句,程序員也需要睡覺:D –

+0

@JohnWoo - 真的!不知道:) –