这是我在从串口接收字符串后尝试做的事情。我在数据之间得到空白,所以我放了两个循环来消除它们。我希望收到跨越多个列的数据和每一行do while循环的单行..在先谢谢
string text = sp.readline();
for (int i = 0; i < text.Length; )
{
p = text[i].ToString();
if (p != " ")
{
do
{
x += text[i].ToString();
s = text[i].ToString();
i++;
} while (s != " ");
try
{
string col = "column" + no.ToString();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO testdata("+col+")VALUES(?data)";
cmd.Parameters.Add("?data", MySqlDbType.VarChar).Value = x;
cmd.ExecuteNonQuery();
x = "";
p = "";
no++;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} i++;
}
答案 0 :(得分:0)
很抱歉,在SQL的任何方言中,您都不能提供表或列名作为可绑定变量(或参数)。如果它适用于MySQL非常好,但是如果你转换到任何其他DBMS品牌和型号,它将突然停止工作。
此外,INSERT
表示创建新行。您需要在单个INSERT
语句中一次插入所有列值,或者计算出如何INSERT
一行,然后UPDATE
为每个新列值。
答案 1 :(得分:0)
如果要插入具有多列的单行,则不需要for循环 以下是三列
int no = 2;
cmd.CommandText = "INSERT INTO testdata(?col1,?col2,?col3)VALUES(?data1,?data2,?data3)";
cmd.Parameters.Add("?col1", MySqlDbType.String).Value = col1;
cmd.Parameters.Add("?col2", MySqlDbType.String).Value = col2;
cmd.Parameters.Add("?col3", MySqlDbType.String).Value = col3;
cmd.Parameters.Add("?data1", MySqlDbType.VarChar).Value = x1;
cmd.Parameters.Add("?data2", MySqlDbType.VarChar).Value = x2;
cmd.Parameters.Add("?data3", MySqlDbType.VarChar).Value = x3;
cmd.ExecuteNonQuery();