を使用して作成することはできますが、更新することはできません。簡単な質問だけで、Microsoft SQL Server 2014 Expressを使用しており、レコードを作成し数値を含むレコードを更新する2つの関数があります。SQL Serverの数値は、C#
いくつかの不明な理由により、小数点の後の数値が50.50より大きい数値を使用してレコードを作成できますが、このレコードを数値で更新しようとすると、小数点の後に間違っています。だからtl、dr(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は、この値のために他のものの間で、世話をする、あなたはクエリパラメータを使用して、あなたのINSERTクエリでは、
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クエリに対しても機能しますが(AddWithValueではなくAddを使用します)。 – Plutonix
[AddWithValue()の使用をやめることはできますか?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithueue-already/) ) – juharr
それは簡単です。 UPDATEのように10進数を文字列に連結すると、ToStringメソッドを使用して文字列に変換されます。あなたのロケールでは、ToStringメソッドは、小数点がカンマで表される一連の文字を生成します。そして、これはあなたのSQLテキストを混乱させます。解決策は簡単です。 Addで行ったようなパラメータを使用する – Steve