C#中的Sql Update循环

时间:2014-08-13 06:34:19

标签: c# postgresql

我想使用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中有两个值的循环内部。

我可以得到一些帮助????

1 个答案:

答案 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 + "%");
        /* ....  */
    }
}