2010-03-02 4 views
1

Я хочу собрать некоторые данные из некоторых таблиц базы данных Access, я нашел некоторые решения в Интернете, но я не нашел способов заполнить данные или набор данных и получить каждое отдельное поле должным образом.Сбор данных из базы данных доступа

Легко ли мне получить целые таблицы, а затем получить только ту информацию, которую я хочу, или мне нужно сделать много запросов в базе данных доступа, получая именно то, что я хочу каждый раз? Любые фрагменты кода для этого?

информация:

  • База данных Access в файле ACCDB , без пользователя или пароль
  • Я в настоящее время использую VB.NET, но не имеет значения, если вы ответить на C#

- [EDIT] -
Sub вопрос:
Connecting to ACCDB format MS-ACCESS database through OLEDB

ответ

3

С 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(); 
    } 
} 
+0

Что делать, если db находится в формате .CDCDB? – Marcelo

+0

Они должны работать одинаково. Ты это пробовал? –

+0

Все еще применяю, задница, как только я завершу его, я отправлю здесь. Я перехожу из другой БД, поэтому я должен брать все данные (connstr, location) из другого места. Спасибо, кстати =) – Marcelo

1

Если вы можете заполнить DataSet, у вас есть все данные (поля) в памяти.

  • В вашем проекте используйте меню «Данные», чтобы добавить источник данных.
  • Следуйте за Мастером. Он создаст Typed DataSet для вас.
  • Перетащите новый DataSource в форму. Это покажет вам код для заполнения DS.
+0

Я задаю соответствующий вопрос здесь: http: /stackoverflow.com/questions/14475968/read-access-file-accdb-from-stream, не могли бы вы проверить его – Saeid

0

Я написал эту тестовую программу для извлечения данных из базы данных 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(); 

     } 

    } 
} 
Смежные вопросы