我正在尝试从表(Access 2007)中检索一些数据,并将此数据显示在C#中Windows窗体的文本框中,我也想用一个按钮进行更新,但是我无法工作,这是我要检索的代码数据但我无法在文本框中显示,有人可以帮我吗?
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Policias.accdb");
OleDbCommand command = new OleDbCommand();
command.Connection = con;
command.CommandText = "SELECT contenido FROM seccion";
command.CommandType = CommandType.Text;
con.Open();
OleDbDataReader dr = command.ExecuteReader();
while (dr.Read())
{
textBox3.Text = dr["cosa"].ToString();
}
dr.Close();
con.Close();
最佳答案
下面,我将指导您如何使用OleDbDataReader从Access(.accdb)文件读取数据,并将信息存储在TextBox控件中。在深入研究代码之前,需要做一些事情来确保自己在做:
确保您没有在Access中打开数据库(这可能会导致文件访问问题)
确保已在调试和发布文件夹(位于项目文件夹的bin文件夹中)中拥有数据库的副本。
现在获取代码!我将逐步指导您完成该过程:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=YourDatabase.accdb");
这行代码告诉您的程序如何访问数据库。提供程序告诉您的程序您将要连接的数据库的类型,而数据源则告诉您的程序数据库的位置。
OleDbCommand command = connection.CreateCommand();
这行代码创建一个命令对象,该命令对象与您的程序将要连接到的数据库关联。
command.CommandText = "SELECT ColumnWithTypeText FROM TableName";
这行代码用于存储我们稍后要使用的数据库命令。因为我们只关心TableName的ColumnWithTypeText中存储的文本,所以我们很明确。如果我们想要存储在TableName中的每个列中的每个项目,则可以使用以下行:
command.CommandText = "SELECT * FROM TableName";
有关SQL命令的更多信息,我建议通读this article。并非所有命令都适用于Access数据库,但大多数命令都适用。
connection.Open();
这行代码打开与数据库的连接。
OleDbDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);
这行代码创建一个OleDbDataReader,它将使用我们之前设置的CommandText。因为我们知道我们将在文本框中显示此信息,所以我们可以使用CommandBehavior.SingleResult一次返回一组信息。
if (reader.HasRows)
{
if (reader.Read())
{
textBox1.Text = reader["ColumnWithTypeText"].ToString();
}
}
else
{
textBox1.Text = "No rows found!";
}
这部分代码将进行检查,以确保DataReader已从数据库接收信息,然后告诉它向我们读取信息,并将其显示在TextBox控件中。如果没有信息返回给阅读器,则“找不到行!”显示在TextBox控件中。因为reader.Read()在if语句中,所以它将只读取一次,从第一组数据开始。在其他情况下,可能需要调用while循环。
reader.Close();
connection.Close();
最后,关闭阅读器和数据库连接。
总之,代码如下所示:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=YourDatabase.accdb");
OleDbCommand command = connection.CreateCommand();
command.CommandText = "SELECT ColumnWithTypeText FROM TableName";
connection.Open();
OleDbDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult);
if (reader.HasRows)
{
if (reader.Read())
{
textBox1.Text = reader["ColumnWithTypeText"].ToString();
//textBox1.Text = reader.GetString(0);
}
}
else
{
textBox1.Text = "No rows found!";
}
reader.Close();
connection.Close();
希望这可以帮助您(和其他人)! :)
关于c# - 如何从Access表中获取一些数据以显示在C#的文本框中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3826878/