将c#与数据库连接

将c#与数据库连接,c#,mysql,database,C#,Mysql,Database,我创建了一个应用程序,当您使用“浏览”将音乐文件添加到该应用程序时,它可以播放音乐 但我的问题是,我希望它与数据库连接 我创建了一个包含信息的数据库:GeluidsfragmentDBSreal 现在我想使用一个列表框来显示数据库中的信息 我使用了捕获并尝试的方法,但我的“尝试”不起作用,它直接指向我的“捕获” 我想在列表框中显示我的数据库信息 我的数据库类 private OleDbConnection connection; public DataKoppeling()

我创建了一个应用程序,当您使用“浏览”将音乐文件添加到该应用程序时,它可以播放音乐 但我的问题是,我希望它与数据库连接

我创建了一个包含信息的数据库:GeluidsfragmentDBSreal

现在我想使用一个列表框来显示数据库中的信息 我使用了捕获并尝试的方法,但我的“尝试”不起作用,它直接指向我的“捕获”

我想在列表框中显示我的数据库信息

我的数据库类

    private OleDbConnection connection;

    public DataKoppeling()
    {
        String pad;
        String provider;
        String applicatiePad;
        String connectionString;



        provider = "Provider=Microsoft.ACE.OLEDB.12.0"; 


        applicatiePad = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\"));
        pad = "Data Source=" + applicatiePad + "/GeluidsfragmentDBSreal.accdb";



        connectionString = provider + ";" + pad;

        connection = new OleDbConnection(connectionString);
    }


    public List<Geluidsfragment> GetAlleFragmenten()
    {
        String sql = "SELECT * FROM Geluidsfragment";
        OleDbCommand command = new OleDbCommand(sql, connection);

        List<Geluidsfragment> fragmenten;
        fragmenten = new List<Geluidsfragment>();

      try
        {
            connection.Open();
            OleDbDataReader reader = command.ExecuteReader();

            int nr;
            string bestandsnaam;
            string titel;
            int min;
            int sec;
            while (reader.Read())
            {
                nr = Convert.ToInt32(reader["nr"]);
                bestandsnaam = Convert.ToString(reader["Bestandsnaam"]);
                titel = Convert.ToString(reader["titel"]);
                min = Convert.ToInt32(reader["min"]);
                sec = Convert.ToInt32(reader["sec"]);
                fragmenten.Add(new Geluidsfragment(nr, bestandsnaam, titel, min, sec));
            }
        }
        catch
        {

            MessageBox.Show("foutje");
        }
        finally
        {
            connection.Close();
        }
        return fragmenten;
    }


    public void VoegToe(  int nr, string bestandsnaam , string titel ,int min ,int sec)
    {
        String sql = "INSERT INTO Geluidsfragment VALUES (" + nr + ",'" + bestandsnaam + "'" + "," + titel + "," + min + "," + sec + ")";
        OleDbCommand command = new OleDbCommand(sql, connection);

        try
        {
            connection.Open();
            command.ExecuteNonQuery();
        }
        catch
        {
        }
        finally
        {
            connection.Close();
        }
    }

    public int AantalStudenten()
    {
        String sql = "SELECT COUNT(*) FROM Geluidsfragment";
        OleDbCommand command = new OleDbCommand(sql, connection);
        int aantal = 0;
        try
        {
            connection.Open();
            aantal = Convert.ToInt32(command.ExecuteScalar());
        }
        catch
        {
        }
        finally
        {
            connection.Close();
        }
        return aantal;
    }


    }
}

.Open()方法有问题。在连接字符串中提到的位置检查可用的连接字符串和数据库。最可能的原因是@RecerNerd在评论中提到的

@如果您将

catch (Exception ex)
{
  MessageBox.Show(ex.StackTrace)
}

我总是将此连接类用于数据库连接,您可以尝试以下方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace dailyNotes
{
class create_connection
{
    public static SqlConnection CreateConnection()
    {
        string ConnString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Hizbul Bahar\Documents\dailynotes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        SqlConnection Conn = new SqlConnection(ConnString);
        Conn.Open();
        return Conn;
    }
        public void disconnect(SqlConnection conn)
        {
            conn.Close();
        }
    }

}

使用
OleDbConnectionStringBuilder
。停止丢弃异常,看看它有什么信息可以告诉您抛出异常的原因。你不应该有一个
catch{MessageBox(胡说八道);}
块;这只会吞噬异常信息。当您进入catch时抛出的错误是什么?把它贴在这里。此外,您似乎有SQL注入漏洞。使用参数。听起来有点像Try正在工作,可能是Open()不工作。是的,如果我使用您提供的捕获并运行应用程序,Open()工作不好,错误显示在哪里,因为它提供的只是文本:at System.DataOleDB.OleDBServicesWrapper.GetDataSource(OleDbConnectionString构造,DataSourceWrapper和datascrWrapper)位于System.Data.oleDb.OleDbConnectioninternal..ctor(OleDbConnectionString构造,OLEDBConnectionConnection连接)
        private void Database_Click(object sender, EventArgs e) 
        List muziek; muziek = dk.GetAlleFragmenten();
        listBox1.Items.Clear();
        foreach (Geluidsfragment fragment in muziek)
        {
            listBox1.Items.Add(fragment.AlsString());
        }


    }
catch (Exception ex)
{
  MessageBox.Show(ex.StackTrace)
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace dailyNotes
{
class create_connection
{
    public static SqlConnection CreateConnection()
    {
        string ConnString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Hizbul Bahar\Documents\dailynotes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        SqlConnection Conn = new SqlConnection(ConnString);
        Conn.Open();
        return Conn;
    }
        public void disconnect(SqlConnection conn)
        {
            conn.Close();
        }
    }