开发者

What does MySqlDataAdapter.Fill return when the results are empty?

开发者 https://www.devze.com 2022-12-22 12:30 出处:网络
I have a \'worker\' function that will be processing any and all sql queries in my program.I will need to execute queries that return result sets and ones that just execute stored procedures without a

I have a 'worker' function that will be processing any and all sql queries in my program. I will need to execute queries that return result sets and ones that just execute stored procedures without any results. Is this possible with MySqlDataAdapter.Fill or do I need to use 开发者_开发问答the MySqlCommand.ExecuteNonQuery() method? Here is my 'worker' function for reference:

private DataSet RunQuery(string SQL)
    {
        MySqlConnection connection;
        MySqlCommand command;
        MySqlDataAdapter adapter;
        DataSet dataset = new DataSet();

        lock(locker)
        {
            connection = new MySqlConnection(MyConString);
            command = new MySqlCommand();
            command = connection.CreateCommand();
            command.CommandText = SQL;
            adapter = new MySqlDataAdapter(command);
            adapter.Fill(dataset);
        }

        return dataset;
    }


Firstly your worker function would throw an exception on the .Fill(dataset) method. You need to construct your adapter with the select command as:

adapter = new MySqlDataAdapter(command);

The result of a nonquery running against a Fill will result in a dataset with no tables returned.

However: Using ADO.NET commands like Adapter.Fill(dataset) to do a non-query command is very inefficient when compared to using the cmd.ExecuteNonQuery() method.

Besides the construction of a separate and redundant DataAdapter object, every call being made in ADO.NET is virtual and needs to be resolved to a call site at run time by the CLR. Under load, running this method continuously will result in a lot of GC pressure with the DataAdapter object needing continuous disposal, and will be noticibly slower than just running command.ExecuteNonQuery();

0

精彩评论

暂无评论...
验证码 换一张
取 消