2014-01-09 116 views
-1

我创造了当您添加音乐文件的应用程序与“浏览” 但我的问题是,我希望它与数据库连接播放音乐的应用程序。连接C#与数据库

我创建了信息的数据库中它: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; 
    } 


    } 
} 

Geluidsfragment类

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,影片名称,分钟,秒,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()); 
     } 


    } 
+0

使用' OleDbConnectionStringBuilder'。 – SLaks

+2

停止只是丢弃例外,看看什么样的信息已经告诉你为什么它被抛出。你不应该有一个'catch {MessageBox(胡说);}'块;只是吃了异常信息。 –

+0

当你进入捕获时抛出的错误是什么?张贴在这里。此外,它看起来像你有SQL注入漏洞。使用参数。 – paqogomez

回答

0

出毛病了您的。开()方法。检查您在连接字符串中提及的位置处的连接字符串和数据库。最可能的原因是@RecerNerd在评论中提到的。

@Ken白色的信息将是,如果你把

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

那么,如果我用你给的渔获物和运行应用程序,在哪里呢错误显示becasue一切都是为了给文本是用:在System.DataOleDB.OleDBServicesWrapper.GetDataSource(OleDbConnectionString构造,DataSourceWrapper&datascrWrapper)在系统.Data.oleDb.OleDbConnectioninternal..ctor(OleDbConnectionString构造,OleDbConnection的连接) – user3154438

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

}