我正在尝试从表(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/

10-11 14:41
查看更多