C# 验证是否执行了mysql命令

C# 验证是否执行了mysql命令,c#,mysql,C#,Mysql,我正在使用 public static bool command(string input, MySqlConnection con) { MySqlCommand command = new MySqlCommand(input, con); var resultSet = command.ExecuteNonQuery(); if (!resultSet.Equals(0)) return true; return false; } 例如:

我正在使用

public static bool command(string input, MySqlConnection con)
{
    MySqlCommand command = new MySqlCommand(input, con);
    var resultSet = command.ExecuteNonQuery();

    if (!resultSet.Equals(0))
        return true;
    return false;
}
例如:

bool comm = mysql_command.command("INSERT INTO sometable (field1,field2) VALUES ('val1','val2')", connection);
if (!comm) textBox1.Text += "Command failed";
else textBox1.Text += "Command successful";
它正确地将
命令successful
添加到textbox1

但当我将
sometable
更改为
sometable
时,textbox1保持为空。我希望它通知我命令失败(
sometablee
不存在),但它没有

谁能告诉我为什么

完整代码:

mysql\u命令:

class mysql_command
{
    public static bool command(string input, MySqlConnection con)
    {
        MySqlCommand command = new MySqlCommand(input, con);
        var resultSet = command.ExecuteNonQuery();

        if (!resultSet.Equals(0))
            return true;
        return false;
    }
}
mysql\u连接:

class mysql_connect
{
    private MySqlConnection connection = null;

    public MySqlConnection connect(string server, string database, string UID, string password)
    {
        try
        {
            string MyConString = "SERVER=" + server + ";" +
                "DATABASE=" + database + ";" +
                "UID=" + UID + ";" +
                "PASSWORD=" + password + ";";
            connection = new MySqlConnection(MyConString);
            connection.Open();
        }
        catch (Exception ex) { Console.WriteLine("MySQL connect error : "+ex.Message); }
        return connection;
    }

    public void disconnect()
    {
        connection.Close();
    }
}
用法:

private void Form1_Load(object sender, EventArgs e)
{
    mysql_connect con = new mysql_connect();
    MySqlConnection connection = con.connect("server1.x.x", "somedb", "user", "pass");

    bool comm = mysql_command.command("INSERT INTO sometable (field1,field2) VALUES ('val1','val1')", connection);
    if (!comm) textBox1.Text += "Command failed";
    else textBox1.Text += "Command successful";
}

原因正如我所料,您的命令方法中会出现异常

public static bool command(string input, MySqlConnection con)
因为请求的表不存在。。。。 编辑命令方法以处理异常:

public static bool command(string input, MySqlConnection con)
{
    try
    {
    MySqlCommand command = new MySqlCommand(input, con);
    var resultSet = command.ExecuteNonQuery();

    if (!resultSet.Equals(0))
        return true;
    return false;
    }
    catch
    {}
    return false;
}

请您发布完整的代码,我想您会得到一个异常,而且…您正在
MySqlCommand
局部变量中泄漏内存,使用
using
处理任何
IDisposable
@SaeedAmiri我添加了完整的代码。@SteveTownsend我觉得垃圾收集会自动为我做这件事。。不是这样吗?从MSDN:
C#,通过.NET Framework公共语言运行库(CLR),自动释放用于存储不再需要的对象的内存。内存的释放是不确定的;每当CLR决定执行垃圾收集时,就会释放内存。但是,通常最好尽快释放有限的资源,如文件句柄和网络连接。
GC会这样做,但只有在它决定是时候释放时才会这样做。对于映射到非托管资源的内容,您应该调用
IDisposable.Dispose
以确保及时清理文件句柄,sockets成功了,谢谢!如果是那样的话,我希望我的程序会崩溃,因为我没有在那里添加try/catch。。。为什么没有呢?可能是你在更高的层次上抓住了它。别这么想,
Form1\u Load
直接使用了
command()
函数,也没有try/catch。。奇怪。哇,像那样吞下例外一点也不傻!!