只是一個簡單的快速問題,我使用的是Microsoft SQL Server 2014 Express,現在我有兩個函數來創建記錄並更新包含數值的記錄。SQL Server數字,可以創建,但不能更新使用C#
由於某些未知原因,我可以使用數字值小於0的數字(如50.50)創建記錄,但是,當試圖用數值更新此記錄時,它只是說我的語法小數點後錯誤。所以tl,博士(50.00工作,50.50或類似的東西,不)。
我現在的問題是:我做錯了什麼?
這裏是我的兩個功能:
public static void UpdateProduct(int id, string name, decimal price)
{
try
{
string query = "UPDATE dbo.Products SET Name = '" + name + "' , Price = " + price + " WHERE ProductID = " + id;
SqlCommand command = new SqlCommand(query, connection);
command.ExecuteNonQuery();
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}
}
public static void AddProduct(string name, decimal price)
{
string query = "INSERT INTO dbo.Products (Name, Price) VALUES (@name, @price)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@name", name);
command.Parameters.AddWithValue("@price", price);
command.ExecuteNonQuery();
}
,這裏是我的SQL該值
create Table Products
(
ProductID INT IDENTITY(1,1) PRIMARY key,
Name VARCHAR(255) NOT NULL,
Price NUMERIC(5,2) NOT NULL,
Active BIT DEFAULT 1
);
SQL參數也適用於UPDATE查詢(但使用Add而不是AddWithValue)。 – Plutonix
您可能想閱讀[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ ) – juharr
很簡單。當像在UPDATE中一樣將小數連接到字符串時,它將使用ToString方法轉換爲字符串。在您的語言環境中,ToString方法會生成一個字符序列,其中小數點由逗號表示。這對你的sql文本造成嚴重破壞。解決方案很簡單。在Add中使用參數 – Steve