-1

簡單INSERT INTO使用C#應用程序的SQL Server。已調試成功下線ExecuteNonQuery()無法運行

cmd.ExecuteNonQuery(); 

該程序不會錯誤或中斷,但沒有任何反應。我已經探索了開發/生產數據庫呃逆的可能性,但似乎並不是這樣。

下面的代碼是保存按鈕單擊。數據庫對象名稱和連接參數DataSourceTableCatalog等都是一般化的,不是逐字的。

string val1 = firstTextBox.Text; 
string val2 = secondTextBox.Text; 
string val3 = thirdTextBox.Text; 

SqlConnection conn = new SqlConnection(@"Data Source=DataSource;Initial Catalog=Catalog;User ID=username;Password=password"); 
string sql = "INSERT INTO dbo.Table(col1, col2, col3) VALUES (" + val1 + "," + val2 + "," + val3 + "); "; 

try 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    cmd.ExecuteNonQuery(); 
} 
catch (System.Data.SqlClient.SqlException ex) 
{ 
    string msg = "Insert Error:"; 
    msg += ex.Message; 
} 
finally 
{ 
    conn.Close(); 
} 

感謝您的幫助!

+7

除了你的問題,你有沒有考慮修復代碼中存在的巨大的SQL注入漏洞? –

+1

跟蹤您的應用程序並向我們展示字符串'sql'的設置。 –

+3

請添加_int rowsAffected = cmd.ExecuteNonQuery()_並告訴我們rowsAffected的值。 – Steve

回答

0

如果您的代碼被複制並且被逐字粘貼,那麼您的連接字符串無效。

Data Source=DataSource;Initial Catalog=Catalog;User ID=username;Password=password

您需要在正確的價值觀,以填補了DataSourceInitialCatalogUserIDPassword值。

此外查詢本身將是錯誤的,除非您實際上有一個名爲Table的表。另外,您還應該研究(谷歌搜索)參數化的SQL查詢,以及using報表以正確處置資源(也稱爲實現IDisposable的類)。

+0

如果這是問題,那麼會引發異常,並且OP會說沒有錯誤 – Steve

+0

我想這是*可能的*數據源的名稱是'數據源'等等.OP對許多事情都不清楚。 –

+0

@Steve他正在吃任何'System.Data.SqlClient.SqlException'錯誤...所以當然,應用程序不會崩潰。 –