어떤 이유로 인해 MS Access 테이블의 디자인보기를 열 수 없습니다. 나는 데이터을 볼 수는 있지만, 특히 열의 길이는 아닙니다. 이 코드 말했다 테이블에 레코드를 삽입하려고하면열 길이를 초과하여 프로그래밍 방식으로 (OLEDB)를 결정할 수 있습니까?
가 :
using (var conn = new OleDbConnection(connStr))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText =
@"INSERT INTO tx_header (tx, site_no, xmlfile, collect_dttm, ccr_user, tx_memo, file_beg, file_end)
VALUES(@txval, @siteNum, @xmlfileName, Now(), @ccrUser, @TXMemo, @strfile_beg, @strfile_end)";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@txval", tx);
cmd.Parameters.AddWithValue("@siteNum", site_no);
cmd.Parameters.AddWithValue("@xmlfileName", xmlfile);
cmd.Parameters.AddWithValue("@ccrUser", ccr_user);
cmd.Parameters.AddWithValue("@TXMemo", tx_memo);
cmd.Parameters.AddWithValue("@strfile_beg", file_beg);
cmd.Parameters.AddWithValue("@strfile_end", file_end);
conn.Open();
cmd.ExecuteNonQuery();
}
}
... 내가 얻을, "System.Data.OleDb.OleDbException 사용자 코드에 의해 처리되지 않은했다 HRESULT = -2147217833 메시지 = 필드는 추가하려는 데이터 양을 받아 너무 작습니다. 적은 데이터를 삽입하거나 붙여보십시오. 출처 = Microsoft Office Access 데이터베이스 엔진 "
보다는 열이 너무 많이 가지고있는 생각해야 데이터, b e 열이 문제가있는 열을 프로그래밍 방식으로 결정할 수 있다면 좋습니다. 그럴 수있어? 방법?
표준 ADO.NET 경로를 통해 스키마 정보를 조사한 적이 있습니까? IDataReader.GetSchemaTable 메소드와 마찬가지로? – Crono
나는 또한 질문해야한다 : 왜 당신은 동적으로 데이터베이스 스펙을 가져와야 하는가? 처음부터 데이터베이스 필드 유형, 길이 및 제약 조건을 알고 있다면 코드가 훨씬 강력 해집니다! : p – Crono
@Crono : 당신 말이 맞아요. 그러나 언급 한 바와 같이 Access로 MDB 파일을 열면 디자인보기를 볼 수 없습니다. 나는 이유를 모른다. –