gpt4 book ai didi

c# - 使用 ExecuteNonQuery 时连接必须有效且打开

转载 作者:行者123 更新时间:2023-11-29 01:15:36 24 4
gpt4 key购买 nike

我正在使用 MySQL 数据库在 c#(visual studio 2017)中构建配置表单。我想将文件夹路径存储在数据库中。我收到“连接必须有效且打开”错误,但是当我注释掉“cmd2.ExecuteNonQuery();”时我没有得到错误。如果您能告诉我我做错了什么,我将不胜感激。如果你能给我一个代码示例,那也很好。这是我的代码:

private void button5_Click(object sender, EventArgs e)
{

ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
MySqlConnection con = new MySqlConnection(conSettings.ToString());

string a = textBox1.Text;
string b = textBox2.Text;
string c = textBox4.Text;
string escapedPath = a.Replace(@"\", @"\\").Replace("'", @"\'");
string escapedPath1 = b.Replace(@"\", @"\\").Replace("'", @"\'");
string escapedPath2 = c.Replace(@"\", @"\\").Replace("'", @"\'");
MySqlCommand cmd2 = new MySqlCommand("update shopmanager.paths set path_to_clients = '" + escapedPath + "',path_to_employee = '" + escapedPath1 + "',path_to_procedures = '" + escapedPath2 + "';");

try
{
con.Open();
cmd2.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
con.Close();

}

最佳答案

当您注释掉 cmd2.ExecuteNonQuery(); 时什么也没有发生,因此不太可能出现错误 ;-)

Connection must be valid and open

此错误表明没有打开的连接对象绑定(bind)到该命令。虽然你打开了连接,但你永远不会将它分配给命令(不同的命令可能有不同的连接)。

所以;您需要将连接分配给命令:

cmd2.Connection = con;

或者,更常见的是,在构建命令时:

MySqlCommand cmd2 = new MySqlCommand("your sql goes here", con);

关于c# - 使用 ExecuteNonQuery 时连接必须有效且打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com