我这里有一个很奇怪的问题!
我编写了一个C#
控制台应用程序,以从预定义的IP地址获取数据,在计算之后,我希望将数据插入到MySQL
数据库中,以便我可以读取它并进行更多操作使用PHP
网络应用程序进行计算,
在我的笔记本电脑上,一切运行正常,
当我在服务器上运行C#
应用程序时,数据将得到完美处理,直到插入数据的最后一步为止,但是当插入数据时,它就像一个整数,没有小数。
我使用VS Studio工具并跟踪了变量,即使在sql
语句中它们也是正确的,但在数据库上它们却失去了小数位数。
我在笔记本电脑上使用Windows 10,并且服务器上装有Windows Server 2016
这是C#
代码:
public static string send_to_db(int uid, float prs, float btlvl, float f1, float f2, double t1, double t2, int dState, int supState, string datetime, string stmt)
{
MySqlConnection connection = null;
string feedback = "";
double min_prs_val = 0, max_prs_val = 0;
// voltage to percentage the btlvl
btlvl = (btlvl * 100) / 12;
try
{
connection = new MySqlConnection(stmt);
connection.Open();
MySqlCommand insertData = new MySqlCommand($"INSERT INTO pm_data_records (pm_detail_id, pm_pressure, pm_battery_charge, pm_flow1, pm_flow2, pm_tot1, pm_tot2, pm_door, pm_sup, pm_sent_time) VALUES('{uid}','{prs}','{btlvl}','{f1}','{f2}','{t1}','{t2}','{dState}','{supState}','{datetime}')", connection);
insertData.ExecuteNonQuery();
MySqlCommand updateData = new MySqlCommand($"UPDATE pm_data_last SET pm_detail_id = '{uid}', pm_pressure = '{prs}', pm_battery_charge = '{btlvl}', pm_flow1 = '{f1}', pm_flow2 = '{f2}', pm_tot1 = '{t1}', pm_tot2 = '{t2}', pm_door = '{dState}', pm_sup = '{supState}', pm_sent_time = '{datetime}' WHERE pm_detail_id = '{uid}'", connection);
updateData.ExecuteNonQuery();
...
我在服务器上安装了Visual Studio,并从笔记本电脑中复制了代码并在那里进行了编译(为vs文件安装了MySQL
之后),仍然没有小数点,
我没有想法,请帮帮我! tnx
答案 0 :(得分:1)
永远不要像这样使用字符串插值来构建带有参数的查询字符串。
您应该执行以下操作:
using (var command = new MySqlCommand('INSERT INTO pm_data_records (pm_detail_id, pm_pressure, pm_battery_charge, pm_flow1, pm_flow2, pm_tot1, pm_tot2, pm_door, pm_sup, pm_sent_time) VALUES (@uid, @prs, @btlvl, @f1, @f2, @t1, @t2, @dState, @supState, @datetime)', connection))
{
command.Parameters.AddWithValue("@uid", uid);
command.Parameters.AddWithValue("@prs", prs);
command.Parameters.AddWithValue("@btlvl", btlvl);
...
command.ExecuteNonQuery();
}