Я использовал этот пример кода из technet для подсчета записей в файле MDB.После преобразования таблиц в базе данных доступа для связи с SQL (с использованием ODBC) программа больше не работает.Есть ли простой способ изменить этот код, чтобы он мог получать количество записей, запрашивая файл MDB?
Странно то, что вы можете открыть файл MDB и просмотреть данные как обычно, он просто извлекает их из SQL.Почему этот код не может сделать то же самое при запросе mdb?
using System;
using System.Data;
using System.Data.OleDb;
using System.Xml.Serialization;
public class MainClass {
public static void Main ()
{
string strAccessConn =
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=BugTypes.MDB";
string strAccessSelect = "SELECT * FROM Categories";
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
}
catch(Exception ex)
{
Console.WriteLine(
"Error: Failed to create a database connection. \n{0}",
ex.Message);
return;
}
try
{
OleDbCommand myAccessCommand =
new OleDbCommand(strAccessSelect,myAccessConn);
OleDbDataAdapter myDataAdapter =
new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
myDataAdapter.Fill(myDataSet,"Categories");
}
catch (Exception ex)
{
Console.WriteLine(
"Error: Failed to retrieve the required data from the DataBase.\n{0}",
ex.Message);
return;
}
finally
{
myAccessConn.Close();
}
DataTableCollection dta = myDataSet.Tables;
foreach (DataTable dt in dta)
{
Console.WriteLine("Found data table {0}", dt.TableName);
}
Console.WriteLine("{0} tables in data set", myDataSet.Tables.Count);
Console.WriteLine("{0} tables in data set", dta.Count);
Console.WriteLine("{0} rows in Categories table",
myDataSet.Tables["Categories"].Rows.Count);
Console.WriteLine("{0} columns in Categories table",
myDataSet.Tables["Categories"].Columns.Count);
DataColumnCollection drc = myDataSet.Tables["Categories"].Columns;
int i = 0;
foreach (DataColumn dc in drc)
{
Console.WriteLine("Column name[{0}] is {1}, of type {2}", i++,
dc.ColumnName, dc.DataType);
}
DataRowCollection dra = myDataSet.Tables["Categories"].Rows;
foreach (DataRow dr in dra)
{
Console.WriteLine("CategoryName[{0}] is {1}", dr[0], dr[1]);
}
}
}
код найден здесь: http://msdn.microsoft.com/en-us/library/aa288452(v=vs.71).aspx