我可以以编程方式确定(OLEDB)超出哪个列长度?

时间:2014-03-18 17:58:09

标签: c# ms-access oledb oledbexception designview

出于某种原因,我无法打开相关MS Access表的设计视图;我可以查看数据,但不能查看设计,特别是列的长度。

当我尝试使用以下代码将记录插入到表中时:

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   消息=该字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴较少的数据。   Source = Microsoft Office Access数据库引擎"

如果我能以编程方式确定哪个列是有问题的列,那么不必猜测哪个列有太多数据。我可以吗?怎么样?

2 个答案:

答案 0 :(得分:1)

有一个非常详细的解释,说明如何从Retrieving Database Schema Information开始查询MSDN中的基础架构信息。

免责声明:我从未尝试过对Access数据库使用它。

答案 1 :(得分:1)

在阅读完上述评论之后,我很清楚您的Access文件只是锁定了其设计师视图。通常只需按住Shift键,双击该文件并按住Shift键直到Access启动并运行,您就可以解锁它们。

从那时起,您可以完全访问表,查询等,以及您的数据库规范。这比试图动态访问它要好得多。