Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和MySQL命令-两个不同的syle?_C#_Mysql - Fatal编程技术网

C#和MySQL命令-两个不同的syle?

C#和MySQL命令-两个不同的syle?,c#,mysql,C#,Mysql,所以,在学习了几个小时的MySQL并试图让我的代码正常工作之后。我至少找到了两种不同的方法来设置SQL命令。从这一点上,我有一个关于使用C#的MySQL的一般性问题 这两个命令之间的区别是什么: MySqlCommand cmd = new MySqlCommand(); cmd.Connection = conn; 及 一个比另一个好吗 我已经运行了这两个程序,在我的db表中插入数据时,这两个程序似乎都运行得很好。我不知道这是否有助于回答这个问题,但这是我的代码: public stati

所以,在学习了几个小时的MySQL并试图让我的代码正常工作之后。我至少找到了两种不同的方法来设置SQL命令。从这一点上,我有一个关于使用C#的MySQL的一般性问题

这两个命令之间的区别是什么:

MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;

一个比另一个好吗

我已经运行了这两个程序,在我的db表中插入数据时,这两个程序似乎都运行得很好。我不知道这是否有助于回答这个问题,但这是我的代码:

 public static void AddSong(Songs s)
    {
        MySqlConnection conn;
        string myConnectionString;

        myConnectionString = "server=127.0.0.1;uid=root;" +
            "pwd=mysql;database=MySQL_TestDB;";

        conn = new MySqlConnection();
        conn.ConnectionString = myConnectionString;

            try
            {
                conn.Open();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }


        string query = "INSERT INTO Songs (Title, Artist) VALUES (" +
                    "@Title, " +
                    "@Artist)";

        /*
        MySqlCommand cmd; 
        cmd = conn.CreateCommand();
        cmd.Connection = conn;
        */

        MySqlCommand cmd = new MySqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = query;

        cmd.Parameters.AddWithValue("@Title", s.Name);
        cmd.Parameters.AddWithValue("@Artist", s.Artist);
        cmd.ExecuteNonQuery();

        conn.Close();   
    }

不,恐怕他们都是一样的,做同样的事
conn.CreateCommand()
实际上返回一个新的
MySqlCommand
实例

正如政府明确表示的那样

创建并返回与 SqlConnection


我想这和你的问题是一样的@Terminus,哇,我真的花了将近20分钟寻找答案。我只是不知道该输入什么。谢谢我用谷歌搜索了sql命令和createcommand之间的差异,找到了我的第一个结果。ThoughThank@Rahul和@Terminius之后有几个有趣的结果!虽然链接的文档是针对
SqlCommand
的,但是对于
MySqlCommand
类也是一样的。我想知道这是不是故意的?我一直在使用MSSQLServer使用SqlCommand,刚刚开始使用MySQL。我不得不改变一些事情,比如你提到的
MySqlCommand
,以及连接字符串(顺便说一句,这花了我很长时间)的一些古怪的事情。再次感谢。@KerryWhite,
MySqlCommand
类由MySQL connecter(C#的驱动程序)提供,但它们的底层遵循相同的设计/体系结构。因此,所有不同的RDBMS驱动程序都是相同的。
 public static void AddSong(Songs s)
    {
        MySqlConnection conn;
        string myConnectionString;

        myConnectionString = "server=127.0.0.1;uid=root;" +
            "pwd=mysql;database=MySQL_TestDB;";

        conn = new MySqlConnection();
        conn.ConnectionString = myConnectionString;

            try
            {
                conn.Open();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }


        string query = "INSERT INTO Songs (Title, Artist) VALUES (" +
                    "@Title, " +
                    "@Artist)";

        /*
        MySqlCommand cmd; 
        cmd = conn.CreateCommand();
        cmd.Connection = conn;
        */

        MySqlCommand cmd = new MySqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = query;

        cmd.Parameters.AddWithValue("@Title", s.Name);
        cmd.Parameters.AddWithValue("@Artist", s.Artist);
        cmd.ExecuteNonQuery();

        conn.Close();   
    }