从 Access 数据库收集数据

Posted

技术标签:

【中文标题】从 Access 数据库收集数据【英文标题】:Gathering data from Access database 【发布时间】:2010-03-02 17:59:41 【问题描述】:

我想从 Access 数据库的某些表中收集一些数据,我在网上找到了一些解决方案,但我还没有找到填充数据表或数据集以及正确获取每个字段的方法。

我是否更容易获得整个表格然后获得我想要的信息,或者我应该在访问数据库中进行大量搜索以获得我想要的每次?有任何代码sn-ps吗?

信息:

Access 数据库位于 ACCDB 中 文件,没有用户名或密码 我目前正在使用 VB.NET,但它 如果你用 C# 回答也没关系

--[编辑]--子问题:Connecting to ACCDB format MS-ACCESS database through OLEDB

【问题讨论】:

【参考方案1】:

来自here,您使用OleDbDataReader

using System;
using System.Data;
using System.Data.Common;
using System.Data.OleDb;

class MainClass

  static void Main(string[] args)
  
    string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\\Northwind.mdb";

    OleDbConnection conn = new OleDbConnection(connectionString);

    string sql = "SELECT * FROM Orders";

    OleDbCommand cmd = new OleDbCommand(sql, conn);

    conn.Open();

    OleDbDataReader reader;
    reader = cmd.ExecuteReader();

    while (reader.Read()) 
    
      Console.Write(reader.GetString(0).ToString() + " ," );
      Console.Write(reader.GetString(1).ToString() + " ," );
      Console.WriteLine("");
    

    reader.Close();
    conn.Close();
  

【讨论】:

仍在申请中,等我完成后我会在这里发帖。我正在从其他数据库迁移,所以我必须从不同的地方获取每个数据(connstr,位置)。谢谢你,顺便说一句=) 连接字符串应包含 Microsoft.ACE.OLEDB.12.0 而不是 Microsoft.JET.OLEDB.4.0 (connectionstrings.com/access-2007) 它有效。但是,如果我想从它的名称而不是从它在表中的序号位置调用该字段怎么办? (不只选择字段) 你不能直接。但是,您可以做的是使用正确的名称设置一个 Enum->ordinal 查找,但这可能会变得混乱。 谢谢。它实际上不适用于 ACCDB,仅适用于编辑中链接的 .MDB(该死)检查问题。【参考方案2】:

如果你可以填充一个DataSet,你就拥有了内存中的所有数据(字段)。

在您的项目中,使用“数据”菜单添加数据源。 跟随向导。它将为您创建一个 Typed DataSet。 将新的数据源拖到一个窗体中。这将显示填写 DS 的代码。

【讨论】:

我在这里问一个相关的问题:***.com/questions/14475968/…,请您检查一下【参考方案3】:

我编写了这个测试程序来从 DAO 数据库中检索数据。这也应该对你有用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;


namespace TestReadCfg

  class Program
  
    static void Main(string[] args)
    
        string connectionString =
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        + "c:\\Avtron\\addapt\\Configuration\\testDao.db;Jet OLEDB:Database Password=RainbowTrout;";

        string queryString = "SELECT * from Sections order by Address";

        using (OleDbConnection connection = new OleDbConnection(connectionString))
        
            // Create the Command and Parameter objects.
            OleDbCommand command = new OleDbCommand(queryString, connection);
            try
            
                connection.Open();
                OleDbDataReader reader = command.ExecuteReader();
                int iRecNbr = 1;
                while (reader.Read())
                
                    String sRecord = string.Empty;
                    sRecord = string.Format("Record 0: ", iRecNbr);
                    for (int i = 0; i < reader.FieldCount; i++)
                    
                        sRecord += string.Format("0 ", reader[i].ToString());
                    
                    Console.WriteLine(sRecord);
                    iRecNbr++;
                
                reader.Close();
            
            catch (Exception ex)
            
                Console.WriteLine(ex.Message);
            
            Console.ReadLine();

        

   

【讨论】:

以上是关于从 Access 数据库收集数据的主要内容,如果未能解决你的问题,请参考以下文章

access数据库管理软件收集下载

Access 2013 - 通过表单收集数据

从 Access 数据库中获取数据的正确方法

为数据收集部署 MS Access 数据库应用程序的选项

我需要结合 MS Access 和 MS Outlooks 数据收集功能创建自定义(邮件合并)电子邮件

如何使用 C# 创建 Access 数据库并不断向其中保存实时数据