你的樣品是SQL injection在最純粹的形式書中的例子。'
關閉之前的報價和SQL命令的其餘部分的解釋與你期望的不同。
There不是在直接處理非硬編碼值和SqlConnection
時不使用parametrized queries的藉口。
另請查看這些articles瞭解更多細節。近似樣品(需要的字段,並沒有表現出異常處理):
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("insert into tblmain values(@name")", connection);
command.Parameters.Add("@name", SqlDbType.String);
command.Parameters["@name"].Value = customerID;
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
你可能會碰到的第二個問題是,如果你挑錯字段類型的文本 - 要能夠存儲你想你需要的Unicode字符串中的字符。查看C#: DbType.String versus DbType.AnsiString的帖子瞭解詳情。
使用[參數化查詢](http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/)而不是字符串連接。您的代碼對[SQL Injection](http://en.wikipedia.org/wiki/SQL_injection)攻擊開放。 –
As @SonerGönül表示您正在使您的網站容易受到SQL注入攻擊。改用'SqlCommand'。你可以使用'「插入tblmain值(?,?,?)」。然後使用'SqlCommand.Parameters.Add'。 – Nilesh