【问题标题】:MS Access OleDB does not return any rowMS Access OleDB 不返回任何行
【发布时间】:2015-02-23 20:25:03
【问题描述】:

我正在使用此代码将数据返回到我的应用程序:

        try
        {
            OleDbConnection conn = new OleDbConnection(GetConnectionStringAccess());
            string cSQL = "SELECT Cracha, Data_Hora, Terminal, Entrada_Saida, Situacao, Tipo, Divergencia, SaiuMarcacao, Justificativa, IDMarcacao, PIS, NSR FROM Marcacao";
            conn.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = cSQL;
            cmd.CommandType = CommandType.Text;
            OleDbDataReader dr = cmd.ExecuteReader();
            conn.Close();
            return dr;
        }
        catch (Exception ex)
        {
            throw;
        }

但没有返回任何内容。我的数据库有一百万条记录。

如果我使用数据集/表适配器访问数据库,数据显示正常,但在代码中没有返回;

这是我的方法GetConnectionStringAccess()返回的连接字符串:

       "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\CCBM\\Ponto Dimep\\BM\\DIMEP.Mdb;Persist Security Info=True;Jet OLEDB:Database Password=xxxx"

这是我从 app.config 获取应用程序连接字符串的方法:

    public static string GetConnectionStringAccess()
    {
        return System.Configuration.ConfigurationManager.ConnectionStrings["ImportaAccess.Properties.Settings.PontoAccessBM"].ConnectionString;
    }

在 app.config 中,这是连接字符串键:

    <add name="ImportaAccess.Properties.Settings.PontoAccessBM" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CCBM\Ponto Dimep\BM\DIMEP.Mdb;Persist Security Info=True;Jet OLEDB:Database Password=obdI109j"
        providerName="System.Data.OleDb" />

如果我运行 tableAdapter.Fill 方法,为什么我的代码不使用此代码返回任何行并返回所有行?

【问题讨论】:

    标签: c# oledbcommand


    【解决方案1】:

    在关闭连接之前,您需要从数据读取器读取对​​象。喜欢:

    List<object> x = new List<>();
    while (dr.Read())
    {
        x.Add(<your stuff>); // add as appropriate
    }
    

    然后返回列表(或您使用的任何内容)而不是返回数据读取器

    【讨论】:

      【解决方案2】:

      因为您的 DataReader 是一个指针,并且您在返回之前关闭。

      尝试在 DataReader 关闭之前使用数据表检索数据 像这样:

       try
          {  
             DataTable Tbl = new DataTable();
              OleDbConnection conn = new OleDbConnection(GetConnectionStringAccess());
              string cSQL = "SELECT Cracha, Data_Hora, Terminal, Entrada_Saida, Situacao, Tipo, Divergencia, SaiuMarcacao, Justificativa, IDMarcacao, PIS, NSR FROM Marcacao";
              conn.Open();
              OleDbCommand cmd = new OleDbCommand();
              cmd.Connection = conn;
              cmd.CommandText = cSQL;
              cmd.CommandType = CommandType.Text;
              OleDbDataReader dr = cmd.ExecuteReader();
              Tbl.Load(rd,LoadOption.OverwriteChanges);
              conn.Close();
              return Tbl;
          }
          catch (Exception ex)
          {
              throw;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多