C#을 사용하여 Access db (.accdb)를 쿼리하려고합니다. 아래 코드는 main()의 Console.WriteLine (rs.Fields.Item (0) .Value); 필드에 포함 된 값을 실제로 보려고하는 줄에 올 때까지 잘 작동합니다.'adodb.fields'에 'Item'에 대한 정의가 없습니다
내가 경고 메시지에 검색 한 :
'ADODB.Fields이'상품 '과'ADODB.Fields '의 첫 번째 인수 유형을 받아들이는없는 확장 메서드'항목 '에 대한 정의가 포함되어 있지 않습니다 볼 수 있습니다 (당신은 using 지시문 또는 어셈블리 참조가?)
뿐만 아니라, 내가 "개별 필드를 참조하는 방법 C#을 ADODB"를 검색 한 사람들 검색에서 제공 모든 것을 '항목을 나타냅니다 '는'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();
}
}
}
당신은 내가 볼 수있는에서 잘못 필드 이름에 액세스하려고합니다. To : ('rs.fields [ "LAST_NAME"].) ToString()' – MethodMan
이 기술을 OleDB와 함께 사용하면이'SO'의 답변 섹션에 좋은 예제가 있습니다. 이전 게시물 http :// /stackoverflow.com/questions/930/how-do-i-connect-to-a-database-and-loop-over-a-recordset-in-c – MethodMan
내 질문에 찬성 한 사람 : 누구든 도와주세요. 내가 어떻게 내 질문을 향상시킬 수 있는지에 대한 제안을함으로써? – johncroc