无法隐式转换类型错误

Cannot implicity convert type error

尝试用数据库中的数据填充 Combobox,我正在使用 ExecuteReader,如下所示,但是当我尝试实例化我的连接时,它向我显示错误

Cannot implicitly convert type error

我的 DBConnect class 代码:

public class DBConnect
{
        private SqlConnection connection;
        private string servername = "10.1.76.109,1433";
        private string database = "EngLib";
        private string dbuser;
        private string userpassword;


        public DBConnect()
        {

        }

        public void doDBConnect(string dbuserform, string userpasswordform)
        {
            dbuser = dbuserform;
            userpassword = userpasswordform;
        }


        public void Initialize()
        {

        }

        public bool openConnection()
        {
            string connectionString;
            connectionString = "Server=" + servername + ";Database=" + database + ";user id=" + dbuser + ";Password=" + userpassword;
            Console.WriteLine(connectionString);
            connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                return true;
            }
            catch (SqlException ex)
            {
                switch (ex.Number)
                {
                    case 0:
                        MessageBox.Show("Não é possível contactar o servidor. Entre em contato com o administrador");
                        break;

                    case 18456:
                        MessageBox.Show("Usuário/Senha inválidos, tente novamente");
                        break;
                }
                return false;
            }

}

我的表单代码:

{
    public Form2()
    {
        InitializeComponent();
    }

    public void Form2_Load(object sender, EventArgs e)
    {
        SqlDataReader rdr = null;
        DBConnect sqlConnection;
        sqlConnection = new DBConnect();
        sqlConnection.doDBConnect(dbuserform: "usertest", userpasswordform: "usertest");
         {
            try
            {

                {
                    sqlConnection.openConnection();
                    SqlCommand sqlCmd;
                    sqlCmd = new SqlCommand("SELECT Material FROM EngLib");
                    sqlCmd.Connection = sqlConnection;
                    SqlDataReader sqlReader = sqlCmd.ExecuteReader();

                    while (sqlReader.Read())
                    {
                        comboBox1.Items.Add(sqlReader["Material"].ToString());
                    }

                    sqlReader.Close();
                }
            }
            finally
            {
                // close the reader
                if (rdr != null)
                {
                    rdr.Close();
                }
            }
        }
    }
}

代码中的用户名和密码只是临时的。

我认为问题出在这里:

DBConnect sqlConnection;
SqlCommand sqlCmd;
sqlCmd.Connection = sqlConnection;

SqlCommand 期望 ConnectionSqlConnection 类型,但您正在分配自己的 class DBConnect.

可能的修复:

DBConnect 上公开 connection 属性 并使用它。

SqlConnection.

继承 DBConnect

直接使用SqlConnection

附加说明:您没有在 DBConnect class 中处理 SqlConnection,这会导致 WhosebugException。你应该实施 IDisposable.