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