将c#与数据库连接

时间:2014-01-09 17:52:23

标签: c# mysql database

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

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

现在我想使用列表框来显示数据库中的信息 我使用了Catch and Try方法但是我的“尝试”不起作用,它直接进入我的“Catch”

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

我的数据库类

    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;
    }


    }
}

Geluidsfragment class

    Public class Geluidsfragment 
    private int nr;
    private String titel;
    private int tijdsduur; //tijdsduur in seconden
    private String bestandsnaam;

    public Geluidsfragment(int nr, String bestandsnaam, String titel, int min, int sec)
    {
        this.nr = nr;
        this.bestandsnaam = bestandsnaam;
        this.titel = titel;
        this.tijdsduur = (min*60)  + sec;          
    }


    public Geluidsfragment(int nr, String bestandsnaam, String titel, int tijdsduur)
    {
        this.nr = nr;
        this.bestandsnaam = bestandsnaam;
        this.titel = "onbekend";
        this.tijdsduur = 0;
    }




    /******** properties ********************************************************/


    public int Nr
    {
        //private get; 
        get { return this.nr;}
    }


    public String Titel
    {
        get {return this.titel;}
        set { this.titel = value ;}
    }


    public int Tijdsduur
    {
        get 
        {
            return this.tijdsduur ;
        }

        set 
        {

            if (this.tijdsduur <= 0)
            {
                this.tijdsduur = 0;
            }

            else
                this.tijdsduur = value;
        }
    }



    public string TijdsduurString
    {
        get 
        {


            int minuten = (tijdsduur / 60);
            int seconden = (tijdsduur % 60);

            return String.Format("{0:00} : {1:00} ", minuten , seconden);       
        }

    }


    public string Bestandsnaam
    {
        get { return this.bestandsnaam; }
        set { this.bestandsnaam = value; }
    }
    public String toonInfo()
    {
        return nr.ToString() + " - " + titel + " - " + tijdsduur.ToString() + " - " + bestandsnaam;
    }

    public String AlsString()
    {


       return String.Format("Nr {0}: {1} - {2:0.00} ", nr, titel,TijdsduurString); 
    }


    public bool Play()
    {
        try
        {
            System.Media.SoundPlayer myPlayer = new System.Media.SoundPlayer();
            myPlayer.SoundLocation = bestandsnaam;
            myPlayer.Play();
            return true;
        }
        catch
        {
            return false;
        }

    }
}

}

BG体验课

{


    public List<Geluidsfragment> fragmenten; 
    private String thema;

    public BGExperience(String thema)
    {
        fragmenten = new List<Geluidsfragment>();
        this.thema = thema;
    }


    public String Thema
    {
        get { return Thema; }
    }


    public Geluidsfragment GetFragment(int nr)
    {
        foreach (Geluidsfragment fragment in fragmenten)
        {
            if (fragment.Nr == nr)
            {
                return fragment;
            }
        }

        return null;
    }



   public List<Geluidsfragment> GetAlleFragmenten()
    {
        return fragmenten;
    }


    public List<Geluidsfragment> GetFragment(String p)
    {
        List<Geluidsfragment> resultaten = new List<Geluidsfragment>();

        foreach (Geluidsfragment fragment in fragmenten)
        {
            if (fragment.Titel.IndexOf(p) != -1)
            {
                resultaten.Add(fragment);
            }
        }

        return resultaten;
    }

    public bool AddFragment(int nr, String bestandsnaam, String titel, int min, int sec)
    {
        foreach (Geluidsfragment fragment in fragmenten)
        {
               if (fragment.Nr == nr)
            {
                MessageBox.Show("Het nummer is al in gebruik");
                return false;
            }
        }
         if (min <= 0)

                if (sec <= 0)
                {
                    MessageBox.Show("Beide getallen mogen niet 0 zijn");
                return false;
            }
            else

                if (sec <= 0)

                    if (min <= 0)
                    {
                        MessageBox.Show("Beide getallen mogen niet 0 zijn");
                    return false;
                }
                else if (min <= 00)

                    if (sec <= 00)
                    {
                        MessageBox.Show("Beide getallen mogen niet 0 zijn");
                    return false;
                }
                         else

                if (sec <= 00)
                {
                    if (min <= 00)
                    {
                        MessageBox.Show("Beide getallen mogen niet 0 zijn");
                        return false;
                    }
    }
                    if (sec > 60)
                    {
                        MessageBox.Show("Seconden mag max 60 zijn");
                        return false;
                    }

            fragmenten.Add(new Geluidsfragment(nr, bestandsnaam, titel, min, sec));

            return true;
        }

    }
}

我的表单中需要数据库信息的按钮(nr,titel,min,sec,bestandsnaam)             {

        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());
        }


    }

2 个答案:

答案 0 :(得分:0)

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

@Ken白色信息将有用,如果你把

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

答案 1 :(得分:0)

我总是使用这个连接类进行数据库连接,你可以试试这个:

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();
        }
    }

}