使用C#,我试图查询Access数据库(.accdb)。我的代码在下面工作正常,直到它到达实际上试图查看字段中包含的值的行:Console.WriteLine(rs.Fields.Item(0).Value);)在main()中。
我搜索了警告信息:
'ADODB.Fields'不包含'Item'的定义,也没有可以找到接受第一个参数类型'ADODB.Fields'的扩展方法'Item'(你是否缺少using指令或汇编引用? )
同样,我搜索了“C#ADODB如何引用单个字段” 这些搜索中出现的所有内容都表明'Item'应该是'ADODB.Recordset.Fields'命名空间的成员;或者告诉我如何使用迭代器迭代当前记录中的每个字段,这不是我想要的。
我有“使用ADODB;”我的代码中的指令,以及“adodb”引用: (我的声望级别不允许我发布我准备的屏幕剪辑,所以我想你必须接受我的话。)
如何引用Fields集合中的单个字段? (最好通过名字,但我也可以使用索引)
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ADODB;
using iTextSharp;
namespace HistAssessPDF
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void cmdCreatePDFs_Click(object sender, EventArgs e)
{
main();
}
private void main()
{
// throw new NotImplementedException();
string strConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source='C:\\MyLocalDirectory\\MyAccessdb.accdb';" +
"Persist Security Info=False;";
Connection db = new Connection();
db.Open(strConnStr);
Recordset rs = new Recordset();
rs.ActiveConnection = db;
rs.CursorType = CursorTypeEnum.adOpenForwardOnly;
rs.LockType = LockTypeEnum.adLockReadOnly;
rs.Open("select LAST_NAME from ClientTbl;");
while (!rs.EOF)
{
Console.WriteLine(rs.Fields.Item("LAST_NAME").Value); //also tried rs.Fields.Item(0).Value
rs.MoveNext();
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Form1_FormClosing(object sender, EventArgs e)
{
// Code in here to clean things up (sever connection to db, destroy objects, etc.) before actually exiting the app
MessageBox.Show("I'm about to close.");
}
private void cmdClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
答案 0 :(得分:1)
您正试图从我看到的内容中错误地访问字段名称。试试这样的事情
rs.fields["LAST_NAME"].ToString(); //this should do the trick
或
rs.fields["LAST_NAME"].Value; should work as well