代码之家  ›  专栏  ›  技术社区  ›  Mark Buckley

Sql连接可与MySql配合使用。数据但不具有Dapper/IDb未找到路径的连接错误

  •  -1
  • Mark Buckley  · 技术社区  · 1 年前

    我正在尝试更改使用MySql的SQL连接。使用Dapper从运行在VPS上的MySQL数据库中检索数据。我使用MySql连接以下连接类没有问题。数据

    class Connection
    {
        MySqlConnection conn;
        static string host = "Fake Name";
        static string database = "Fake Database";
        static string userDB = "Fake User";
        static string password = "Fake Password";
        
        public bool Open()
        {
            try
            {
                strProvider = "Server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;
                conn = new MySqlConnection(strProvider);
                conn.Open();
                return true;
            }
            catch (Exception er)
            {
                MessageBox.Show("Connection Error ! " + er.Message, "Information");
            }
            return false;
        }
        public void Close()
        {
            conn.Close();
            conn.Dispose();
        }
        public DataSet ExecuteDataSet(string sql)
        {
            try
            {
                DataSet ds = new DataSet();
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);
                da.Fill(ds, "result");
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return null;
        }
        public MySqlDataReader ExecuteReader(string sql)
        {
            try
            {
                MySqlDataReader reader;
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                reader = cmd.ExecuteReader();
                return reader;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return null;
        }
        public int ExecuteNonQuery(string sql)
        {
            try
            {
                int affected;
                MySqlTransaction mytransaction = conn.BeginTransaction();
                MySqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql;
                affected = cmd.ExecuteNonQuery();
                mytransaction.Commit();
                return affected;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return -1;
        }
    }
    

    然而,我正在尝试切换到Dapper,以便可以安全地管理查询。我正在使用下面的代码

    DataAccess db = new DataAccess();
    bookingList = db.GetBookings(BookingCalendar.SelectionStart.ToString("yyyy-MM-dd"));
    
    
    
    public class DataAccess
    {
        public List<Booking> GetBookings(string date) 
        {           
            using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.connectionString("Fake Name")))
            {
                return connection.Query<Booking>($"select * from Bookings WHERE Date ='{date}'").ToList();
            }
        }
    }
    
    
    
    public static class Helper
    {
        public static string connectionString(string name)
        {
            return ConfigurationManager.ConnectionStrings[name].ConnectionString;
        }
    }
    
    
    
    <connectionStrings>
      <add name="Fake Name" connectionString="Server=Fake IP; Database=Fake Database; User Id=Fake User; Password=Fake Password providerName=System.Data.SqlClient"/>
    </connectionStrings>
    

    但在尝试打开连接时,我在15秒后出现路径未找到错误。我不知道为什么会发生这种情况,因为这两个连接字符串是相同的。如有任何帮助,我们将不胜感激

    1 回复  |  直到 1 年前
        1
  •  1
  •   jmcilhinney    1 年前

    当然不起作用。你正在使用 SqlClient 在第二个代码片段中,它是SQL Server特有的。如果你想连接到MySQL,那么你仍然需要使用MySQL提供程序。