2017-08-02 123 views
0

web.config文件包括:ASP.NET:將數據插入SQL服務器

<connectionStrings> 
    <add name="MedDBConnectionString" 
     connectionString="Data Source=DESKTOP-3NELORE;Initial Catalog=MedDB;User ID=sa;Password=mypassword" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

從一個網頁,我想插入一個領域到SQL Server表使用此代碼:

SqlConnection sc = new SqlConnection(); 

sc.ConnectionString = ConfigurationManager.ConnectionStrings["MedDBConnectionString"].ConnectionString; 

sc.Open(); 

SqlCommand com = new SqlCommand(); 
com.Connection = sc; 
com.CommandText = "INSERT INTO tblSirketler (SirketAdi) VALUES ('" + txtSirketAdi.Text + "')"; 

com.ExecuteNonQuery(); 
sc.Close(); 

此代碼既不會引發錯誤,也不會將值添加到表中。我對這個主題很陌生。在此先感謝您的答案

+4

這可能會引發異常或向表中添加一行。所以你可能在查看錯誤的數據庫或其他東西。順便說一句,你應該總是在SQL查詢中使用參數,而不是粘貼來自UI元素的值。 –

+3

你確定這段代碼被調用嗎?您是否嘗試過調試並逐步查看是否能夠提供有關正在發生的事情的線索?另外,你說你是新的,所以我會從我平時的帽子說這句話時,不要鎖,但它仍然值得大膽,[**你應該總是使用參數化查詢**](https://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death /),而不是將你的值連接到你的SQL中。它容易受到格式錯誤的SQL,惡意SQL注入,它不是類型安全的,並且不能使用緩存的查詢計劃。 – GarethD

回答

0

我會研究使用微型ORM,如Dapper這樣的查詢。 Dapper使得查詢的參數化非常容易,以防止SQL注入。用using語句包裝連接也是一個好主意。

查詢本身看起來不錯。我同意這些意見,如果這個代碼正在運行,它應該添加一行或者拋出一個錯誤。