我想使用c#在Posgres中更新我的表格。这是代码:
string[] new_fax = label17.Text.Split(',');
string[] new_names = label19.Text.Split(',');
label17.Text = new_fax[0];
label19.Text = new_names[1];
string strConnString = "Server=" + path_server + ";Port=" + path_port + ";User Id=" + path_username + ";Password=" + path_password + ";Database=****";
try
{
foreach(var data in new_fax)
{
foreach (var name_new in new_names)
{
NpgsqlConnection objConn = new NpgsqlConnection(strConnString);
string strSelectCmd = "update tbl_account set balance =" + label17.Text + " where account_name like '%" + label19.Text + "%'";
MessageBox.Show(strSelectCmd.ToString());
objConn.Open();
DataSet ds = new DataSet();
NpgsqlDataAdapter objDataAdapter = new NpgsqlDataAdapter(strSelectCmd, objConn);
objDataAdapter.Fill(ds);
objConn.Close();
MessageBox.Show("Success");
}
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, "Error message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
问题是它不会进入label.text中有两个值的循环内部。
我可以得到一些帮助????
答案 0 :(得分:0)
首先,您没有使用循环中的适当值。第二:为天堂使用参数化查询。请注意Google SQL注入。
您的代码应如下所示:不要使用文本框,而应使用foreach循环中的值。
foreach(var data in new_fax)
{
foreach (var name_new in new_names)
{
NpgsqlConnection objConn = new NpgsqlConnection(strConnString);
string strSelectCmd = "update tbl_account set balance = @data where account_name LIKE '@name_new'";
strSelectCmd.Parameters.AddWithValue("@data", data);
strSelectCmd.Parameters.AddWithValue("@name_new", "%" + name_new + "%");
/* .... */
}
}