我通过ms访问有关于数据库连接的功课。
我准备了我的数据库并将其保存为dbMert并将其放入debug / bin
这是我连接数据库的CustomerDatabase类:
static class CustomerDatabase
{
static string connectionstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dbMert.mdb";
static OleDbConnection connection = null;
static OleDbCommand command = null;
public static void ConnectToDatabase()
{
if (connection == null)
{
connection = new OleDbConnection(connectionstring);
command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "select * from Customer";
}
}
public static DataTable executeSelect(string sql)
{
ConnectToDatabase();
DataTable dt = null;
dt = new DataTable();
command.CommandText = sql;
OpenConnection();
OleDbDataReader datareader = command.ExecuteReader();
dt.Load(datareader);
datareader.Close();
CloseConnection();
return dt;
}
public static void OpenConnection()
{
try
{
if (connection != null)
{
connection.Open();
}
}
catch (Exception ex)
{
}
}
public static void CloseConnection()
{
if (connection != null)
{
connection.Close();
}
}
}
}
表单:在构造函数中,我尝试连接到数据库
public Form1()
{
InitializeComponent();
CustomerDatabase.ConnectToDatabase();
}
并且在表单的加载中我尝试将元组带到datagridview但没有任何反应:S
private void Form1_Load(object sender, EventArgs e)
{
string sql1 = "select * from Customer";
DataTable dt = CustomerDatabase.executeSelect(sql1);
}
答案 0 :(得分:2)
无论其他事情(例如未使用using
语句等打开单个连接),您根本不会将新加载的DataTable
与DataGridView
连接起来。您的Form1_Load
方法只是将数据加载到DataTable
,然后有效地将其丢弃。
我怀疑你想要这样的东西:
dataGridView.DataSource = dt;
在方法结束时。
编辑:请注意,这也是OpenConnection
代码中非常糟糕的想法:
catch (Exception ex)
{
}
这基本上说,“如果出现问题,不要记录这个事实或改变其余代码的工作原理 - 只要继续前进,好像什么也没发生过。”
你为什么要捕捉这个例外?
答案 1 :(得分:0)
尝试编写简单的代码。我建议您使用OleDbDataAdaper,其Fill()方法可以轻松填充DataTable
。
您可以使用| DataDirectory |如果您使用位于Bin \ Debug文件夹下的数据库(.mdb)。
static string connectionstring = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=|DataDirectory|\dbMert.mdb";
或者
static string connectionstring = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=x:\full_path\dbMert.mdb";
或者
static string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=x:\full_path\dbMert.mdb";
static class Test
{
static string connectionstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dbMert.mdb";
public static DataTable executeSelect(string sql)
{
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(sql,connectionString);
adapter.Fill(dt);
return dt;
}
}
在form_load处理程序中添加以下代码,
string sql1 = "select * from Customer";
DataTable dt = Test.executeSelect(sql1);
DataGridView1.DataSource=dt;
答案 2 :(得分:0)
当我将DB文件移动到bin/debug
时,会显示一条错误消息“4.0未安装”。
然而,当我把它移到bin时,问题就解决了。
我的代码:
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= ..\\dbMert.mdb";
con.Open();
recordları
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
OleDbDataAdapter da = new OleDbDataAdapter();
da = new OleDbDataAdapter("Select * from Customer", con);
da.Fill(dt);
dataGridView1.DataSource = dt;
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
if(col.ToString() == "emailAdress")
comboBox1.Items.Add(row[col]);
}
con.Close();