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

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

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

信息:

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

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

【问题讨论】:

    标签: c# .net vb.net ms-access 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 的代码。

    【讨论】:

    【解决方案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();
    
            }
    
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2011-04-20
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多