2015-01-21 68 views
-1

我正在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"); 
      } 
+3

你的问题是什么? – Bobby 2015-01-21 11:32:11

+0

你能提供代码吗? – 2015-01-21 11:36:26

+0

这是我试过的代码,但我知道这是完全错误的,因为要添加我希望它生成自动ID,这是我只是试图编辑值,完全失败 http://pastebin.com/EAxSGdCY – 2015-01-21 11:40:36

回答

0

的代码在你的链接甚至不是安全的。

  • 你SqlConnction和SqlCommand的将不会出售
  • 最终用户可以使用SQL注入

要把你的SqlConnection和SqlCommand的在using语句。

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

添加参数到您的SqlCommand,以避免SQL注入攻击

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

创建自己的数据库交互类,不要把一切都在一个类或形式。

如果你让我们知道错误是什么,我们可以帮助你更多。 另外一件好事是首先谷歌你的错误。

+0

在一个稍微有趣的笔记,谷歌搜索程序相关的问题将带你回到' stackoverflow,ha-ha,ha-ha(弱笑)... – code4life 2015-01-21 12:07:18

0

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

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

你的表列需要关联到表与.和表名必须是一样的,你要更新的一个。我在这里假设你的表名是Players

+0

在内联SQL不安全的情况下,它也很难调试。 – Jake 2015-01-21 12:21:32

+0

你知道我是如何让Players.ID值变化的吗?我试过numericUpanddown,它没有工作,然后我尝试使用文本框,但它表示值是一个字符串,我需要它是一个浮动,没有找到任何转换语句,虽然 – 2015-01-21 12:26:08

+0

什么类型是Players.ID ?如果它是由数据库生成的,它应该是一个'int'(我认为)。 – Jake 2015-01-21 12:29:17