首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OleDbDataAdapter填充法性能差

OleDbDataAdapter填充法性能差
EN

Stack Overflow用户
提问于 2016-01-12 13:25:16
回答 1查看 777关注 0票数 0

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

代码语言:javascript
复制
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Environment.CurrentDirectory+"\\Data.mdb;Jet OLEDB:Database Password=pass");
        OleDbCommand com = new OleDbCommand(query, con);
        DataTable dt = new DataTable();
        con.Open();
        OleDbDataAdapter oda = new OleDbDataAdapter(com);
        oda.Fill(dt);
        oda.Dispose();
        com.Parameters.Clear();
        con.Close();
        return dt;

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

我在数据库中有50,000条记录,我只需要检索1行。

请帮帮忙。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 14:02:19

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

注意,我将输出写入IDE输出窗口,因此在使用代码/数据进行此操作时,请将其打开。

代码语言:javascript
复制
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");
                    }
                }
            }
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34744939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档