我有C#(WindowsForm)应用程序,我想将值插入数据库。
我在数据库中输入的信息是产品名称,类别和成本,即十进制(5,2)。
但是,当我尝试插入类似1,90的值时,它只插入1,00。我想说它只在逗号之前插入数字,然后在逗号后添加两个零。
我已尝试使用此代码:
decimal varcost = costprod.Value;
MySqlCommand command_addprod = new MySqlCommand("INSERT INTO products (name, cost, id_category) VALUES ('" + nameprod.Text + "','" + varcost + "'," + getidcat + ")");
这段代码:
decimal varcost = costprod.Value;
MySqlCommand command_addprod = new MySqlCommand("INSERT INTO products (name, cost, id_category) VALUES ('" + nameprod.Text + "'," + varcost + "," + getidcat + ")");
这两个代码之间的区别在于第一个代码有引号而第二个代码没有。
使用第一个代码,它给了我说的错误。使用第二个代码,它给出了一个错误:“列数与第1行的值计数不匹配”。
欢迎每一位帮助!
修改
现在我尝试使用不同的代码:
string getidcat = catprod.SelectedItem.ToString();
try
{
decimal varpreco = precoprod.Value;
string varnome = nomeprod.Text;
MySqlConnection mConn = new MySqlConnection("Persist Security Info=False;server = localhost; port=3307; database = startselling; user = root; password ='usbw';");
var sqlCommand = "INSERT INTO produtos (designacao, preco_unitario, id_categoria) VALUES ('@nome', @preco, (select id_categoria FROM categorias WHERE designacao = @categoria)";
//Create mysql command and pass sql query
using (var command = new MySqlCommand(sqlCommand, mConn))
{
command.Parameters.AddWithValue("@nome", varnome);
command.Parameters.AddWithValue("@preco", varpreco);
command.Parameters.AddWithValue("@categoria", getidcat);
mConn.Open();
command.ExecuteNonQuery();
mConn.Close();
}
MessageBox.Show("Succeeded");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
(有些变量不同但不打扰)
我想我知道错误在哪里,但我不知道如何解决它。
我认为错误发生在变量“varpreco”上,因为它包含带逗号的值,并且由于这会使sql代码的逗号混淆,因此会出错。
现在也许如果我将逗号从变量更改为点,它应该可以工作。问题是我不知道如何使用它。
如果有人能帮助我,我将不胜感激。
答案 0 :(得分:2)
以下代码是如何为命令添加参数
MySqlCommand command_addprod = new MySqlCommand("INSERT INTO products (name, cost, id_category) VALUES (@nameprod, @varcost, @getidcat)";
command_addprod.Parameters.AddWithValue("@nameprod", nameprod.text);
command_addprod.Parameters.AddWithValue("@varcost", varcost);
command_addprod.Parameters.AddWithValue("@getidcat", getidcat);