将平面 MDB 转换为 SQL 链接的 MDB 后,代码不再用于对记录进行计数
本文关键字:MDB 用于 记录 不再 代码 转换 平面 SQL 链接 | 更新日期: 2023-09-27 17:56:22
我使用了 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
做一个不是更容易
吗Select count('x') as rowCount from categories
然后从数据集中的第一条(也是唯一的)记录中提取rowCount
。
你说它不再有效,并暗示这是计数的问题,但哪个部分不起作用?
Rows.Count 是否为 0,但数据表中的行存在? 还是数据集中没有表还是什么?