使用 C# 连接和读取 .MDB 项
Posted
技术标签:
【中文标题】使用 C# 连接和读取 .MDB 项【英文标题】:connect and read .MDB item with C# 【发布时间】:2013-06-03 21:58:36 【问题描述】:是否可以连接到本地 MDB 文件并从中挑选一点信息? 我在 .mbd 文件中有一个表,其中包含一点信息。我希望将该记录输出到禁用的文本框中以供参考。我相信我可以打开数据库并运行查询,但不知道我需要从中读取什么。
谢谢
var myDataTable = new DataTable();
using (var conection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=C:\\menus\\newmenus\\menu.mdb;Password=****"))
conection.Open();
var query = "Select siteid From n_user";
var adapter = new OleDbDataAdapter(query, conection);
OleDbCommandBuilder oleDbCommandBuilder = new OleDbCommandBuilder(adapter);
【问题讨论】:
【参考方案1】:要简单地读取数据库表上的单个字段,您可以使用 OleDbDataReader 循环遍历结果并返回所需的字段..
var myDataTable = new DataTable();
using (var conection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=C:\\menus\\newmenus\\menu.mdb;Password=****"))
conection.Open();
var query = "Select siteid From n_user";
var command = new OleDbCommand(query, conection);
var reader = command.ExecuteReader();
while(reader.Read())
textBox1.Text = reader[0].ToString();
如果您只有一条记录和一个字段,那么更好的解决方案是方法ExecuteScalar
conection.Open();
// A query that returns just one record composed of just one field
var query = "Select siteid From n_user where userid=1";
var command = new OleDbCommand(query, conection);
int result = (int)command.ExecuteScalar(); // Supposing that siteid is an integer
也许我还应该提到,如果查询没有找到与用户 ID 匹配的 ExecuteScalar 返回 null,所以这里最好小心转换
object result = command.ExecuteScalar();
if( result != null)
int userID = (int)result;
.....
【讨论】:
谢谢,是的,只有一行,只是保存sideid记录。这应该很好用。【参考方案2】:是的,很有可能。只需让适配器填充DataTable
,我认为您也不需要OleDbCommandBuilder
。
using (var conection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=C:\\menus\\newmenus\\menu.mdb;Password=****"))
conection.Open();
var query = "Select siteid From n_user";
var adapter = new OleDbDataAdapter(query, conection);
adapter.Fill(myDataTable);
myTextBox.Text = myDataTable.Rows[0][0].ToString();
另外我认为使用ExecuteScalar
会是一个更好的解决方案,但我的答案是针对您已经实例化的对象量身定制的。
【讨论】:
【参考方案3】:您可以使用OleDbCommand.ExecuteScalar 检索单个值。它作为对象返回,您可以将其转换为正确的类型。
【讨论】:
【参考方案4】:你在找这样的stm吗?
OleDbCommand cmd = 新 OleDbCommand(); OleDbDataReader dr = cmd.ExecuteReader(); 而 (dr.Read()) // 在这里阅读你的东西。【讨论】:
以上是关于使用 C# 连接和读取 .MDB 项的主要内容,如果未能解决你的问题,请参考以下文章