让用户将值添加到数据库中

时间:2015-01-21 11:30:50

标签: c# sql sql-server

我在SQL2012中运行数据库并使用Visual Studio2012 C#构建与数据库交互的软件,并且我一直在尝试添加一个与文本框或类似内容交互的按钮用户在数据库中添加/编辑行。

代码:

try
            {

                string conString = "Data Source=MIRANDA-PC;Initial Catalog=Futebol do Rosa;Integrated Security=True";
                SqlConnection con = new SqlConnection(conString);
                string selectSql = "Update Players$ SET Player Name='" + textBox3.Text + "' WHERE Player ID= 1";
                SqlCommand cmd = new SqlCommand(selectSql, con);
                con.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("The values have been UPDATED");
            }
            catch{
                MessageBox.Show("not so fast ***, error found in your ******** code");
            }

2 个答案:

答案 0 :(得分:0)

链接中的代码甚至不安全。

  • 您的SqlConnction和SqlCommand将不会处置
  • 最终用户可以使用SQL Injection

将SqlConnection和SqlCommand放在using语句中。

using (SqlConnection con = new SqlConnection(constring))
{
   using (SqlCommand cmd = new SqlCommand("your query here", con))
   {
       con.Open(); 
       cmd.ExecuteNonQuery();
   }
}

向SqlCommand添加参数以避免SqlInjection

cmd.Parameters.AddWithValue("@param", value);

为数据库交互创建自己的类,不要将所有内容放在一个类或表单中。

如果您告诉我们错误是什么,我们可以为您提供更多帮助。 另外一件好事就是首先谷歌你的错误。

答案 1 :(得分:0)

忽略安全问题(内联SQL很糟糕。非常糟糕。)您的更新有一些基本错误。尝试:

string selectSql = "Update Players SET Players.Name='" + textBox3.Text + 
                   "' WHERE Players.ID= 1";

您的表列需要与.的表关联,并且表名必须与您要更新的表名相同。我在这里假设您的表名是Players