간단한 질문 만하고 Microsoft SQL Server 2014 Express를 사용하고 있습니다. 이제 레코드를 만들고 숫자 값이 포함 된 레코드를 업데이트하는 두 가지 함수가 있습니다.SQL Server 숫자를 만들 수 있지만 C#
몇 가지 알려지지 않은 이유 때문에 소수점 (예 : 50.50) 뒤에 0보다 큰 숫자를 사용하여 레코드를 만들 수 있지만이 레코드를 숫자 값으로 업데이트하려고하면 내 구문 소수점 뒤에 잘못되었습니다. 그래서 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이 알아서 무엇보다도, 당신은 쿼리 매개 변수를 사용하여 삽입 쿼리에서이 값
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에서와 같이 문자열에 연결되면 ToString 메서드를 사용하여 문자열로 변환됩니다. 로캘에서 ToString 메서드는 소수점이 쉼표로 표시되는 문자 시퀀스를 생성합니다. 그리고 이것은 SQL 텍스트로 혼란을 야기합니다. 해결책은 간단합니다. 추가로 사용하는 매개 변수 사용 – Steve