Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OleDbDataAdapter填充方法性能不佳_C#_Ms Access 2010_Oledb - Fatal编程技术网

C# OleDbDataAdapter填充方法性能不佳

C# OleDbDataAdapter填充方法性能不佳,c#,ms-access-2010,oledb,C#,Ms Access 2010,Oledb,我正在使用OleDbDataAdapter类从Access(.mdb)文件获取数据 问题是通过调试我发现,oda.Fill(dt)需要很长时间才能执行。(大约10秒) 我在数据库中有50000条记录,我只需要检索一行 请帮忙。提前谢谢。如果您只需要一行,请尝试使用如下所示的数据读取器,您需要调整数据库名称、字段列表等 注意,我将输出写入IDE输出窗口,以便在使用代码/数据尝试此操作时将其打开 public partial class Form1 : Form { private void

我正在使用OleDbDataAdapter类从Access(.mdb)文件获取数据

问题是通过调试我发现,
oda.Fill(dt)
需要很长时间才能执行。(大约10秒)

我在数据库中有50000条记录,我只需要检索一行


请帮忙。提前谢谢。

如果您只需要一行,请尝试使用如下所示的数据读取器,您需要调整数据库名称、字段列表等

注意,我将输出写入IDE输出窗口,以便在使用代码/数据尝试此操作时将其打开

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        int id = 0;
        if (int.TryParse(textBox1.Text, out id))
        {
            OleDbConnectionStringBuilder Builder = new OleDbConnectionStringBuilder();
            Builder.Provider = "Microsoft.Jet.OLEDB.4.0";
            Builder.DataSource = Path.Combine(Application.StartupPath, "Database1.mdb");

            using (OleDbConnection cn = new OleDbConnection(Builder.ConnectionString))
            {
                string selectStatement = "SELECT UserName, JoinMonth FROM Users WHERE Identifier = @Identifier";
                using (OleDbCommand cmd = new OleDbCommand { CommandText = selectStatement, Connection = cn })
                {
                    cmd.Parameters.Add(new OleDbParameter { ParameterName = "@Identifier", DbType = DbType.Int32, Value = id });
                    cn.Open();
                    OleDbDataReader dr = cmd.ExecuteReader();
                    if (dr.HasRows)
                    {
                        dr.Read();
                        Console.WriteLine("{0} - {1}", dr.GetString(0), dr.GetString(1));
                    }
                    else
                    {
                        Console.WriteLine("Not located");
                    }
                }
            }
        }
    }
}

如果您只需要一行,请尝试使用如下所示的数据读取器,您需要调整数据库名称、字段列表等

注意,我将输出写入IDE输出窗口,以便在使用代码/数据尝试此操作时将其打开

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        int id = 0;
        if (int.TryParse(textBox1.Text, out id))
        {
            OleDbConnectionStringBuilder Builder = new OleDbConnectionStringBuilder();
            Builder.Provider = "Microsoft.Jet.OLEDB.4.0";
            Builder.DataSource = Path.Combine(Application.StartupPath, "Database1.mdb");

            using (OleDbConnection cn = new OleDbConnection(Builder.ConnectionString))
            {
                string selectStatement = "SELECT UserName, JoinMonth FROM Users WHERE Identifier = @Identifier";
                using (OleDbCommand cmd = new OleDbCommand { CommandText = selectStatement, Connection = cn })
                {
                    cmd.Parameters.Add(new OleDbParameter { ParameterName = "@Identifier", DbType = DbType.Int32, Value = id });
                    cn.Open();
                    OleDbDataReader dr = cmd.ExecuteReader();
                    if (dr.HasRows)
                    {
                        dr.Read();
                        Console.WriteLine("{0} - {1}", dr.GetString(0), dr.GetString(1));
                    }
                    else
                    {
                        Console.WriteLine("Not located");
                    }
                }
            }
        }
    }
}

您的
查询是什么?您的表是否有索引或其他内容?如果使用
DataReader
,您只能读取第一行,而不必处理不需要的其他记录。这是我的查询:
选择mname、received\u date、measure\u date、height、weight、calory、pbf\u rate、std\u weight,来自成员数据的fat,其中id\u number=1000
,此查询仅返回一行?如果您直接在Access中运行它需要多长时间?在Access中它可以立即工作!您的
查询是什么?您的表是否有索引或其他内容?如果使用
DataReader
,您只能读取第一行,而不必处理不需要的其他记录。这是我的查询:
选择mname、received\u date、measure\u date、height、weight、calory、pbf\u rate、std\u weight,来自成员数据的fat,其中id\u number=1000
,此查询仅返回一行?如果您直接在Access中运行它需要多长时间?在Access中它可以立即工作!