我创建了一个应用程序,当您使用“浏览”将音乐文件添加到应用程序时播放音乐 但我的问题是我希望它与数据库连接。
我创建了一个包含信息的数据库: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());
}
}
答案 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();
}
}
}