【问题标题】:After accessing the database, the rest of statements do not work访问数据库后,其余语句不起作用
【发布时间】:2013-12-05 04:57:26
【问题描述】:

我有一个文本框 (txtName) 和一个标签 (lblMassage)。

当表单加载时,用户可以在文本框中输入他的名字并将他的数据提交到数据库中。

我的按钮点击事件是

private void btnSubmit_Click(object sender, EventArgs e)
{ 
  string name = txtName.Text;

  String sql = "insert into UserName values ('" + name + "')";
  SqlCommand com = new SqlCommand(sql, ConnectionManager.Connection());
  com.ExecuteNonQuery();

  lblMessage.Text = "Record added successfully";
  txtName.Text = "";
}

class ConnectionManager
{
    public static SqlConnection Connection()
    {
          string ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\chathuranga\documents\visual studio 2012\Projects\SansipProtoType\SansipProtoType\SansipDataBase.mdf;Integrated Security=True";
          SqlConnection con = new SqlConnection(ConnectionString);
          con.Open();
          return con;
    }
}

当我手动检查数据库时,txtName 的值在 UserName 表中,这意味着用户输入的值已成功添加到数据库中。

但是下面两条语句都行不通。

lblMessage.Text = "Record added successfully";
txtName.Text = "";

谁能给我一个解决方案?

【问题讨论】:

  • 这是你的完整代码吗..我在任何地方都没有看到连接打开语句
  • 是的,有些东西不见了。没有打开,没有关闭。当您通过它进行调试时会发生什么。它会碰到这些行还是抛出错误?
  • OK.. 我添加了连接打开和关闭的代码
  • 你真的有一个名为UserName 的表只有一个非默认字段吗?如果没有,您很可能会遇到绕过您没有看到结果的两行的异常。
  • 在这种情况下,插入应该是 INSERT INTO UserName (Name) VALUES('xxx'),但是,像 Aydin 的回答一样参数化是个好主意。

标签: c# sql-server winforms ado.net


【解决方案1】:
private void btnSubmit_Click(object sender, EventArgs e)
{ 
   static SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\chathuranga\documents\visual studio 2012\Projects\SansipProtoType\SansipProtoType\SansipDataBase.mdf;Integrated Security=True";);
        string name = txtName.Text;
        conn.Open();
        SqlCommand myCommand = new SqlCommand("INSERT INTO UserName VALUES (@Username)", conn);
        myCommand.ExecuteNonQuery();


  lblMessage.Text = "Record added successfully";
  txtName.Text = "";
  conn.close();
}

使用此代码

【讨论】:

    【解决方案2】:
    string name = txtName.Text;
    var connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\chathuranga\documents\visual studio 2012\Projects\SansipProtoType\SansipProtoType\SansipDataBase.mdf;Integrated Security=True";
    var connection = new SqlConnection(ConnectionString);
    connection.Open();
    
    var sql = "INSERT INTO UserName VALUES (@Username)";
    using(SqlCommand command = new SqlCommand(sql, connection))
    {
        command.Parameters.AddWithValue("@Username", name);
        command.ExecuteNonQuery();
    }
    connection.Close();
    connection.Dispose();
    lblMessage.Text = "Record added successfully";
    txtName.Text = "";
    

    更新

    【讨论】:

    • Soryy Sir.. 再次出现同样的问题.. 在 com.ExecuteNonQuery(); 语句之后其他线穿不工作
    • 我已经更新了代码,尝试一下,看看它会把我们带到哪里。
    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多