我可以通过编程确定(OLEDB)超出了哪个列长度吗?

本文关键字:编程 可以通过 OLEDB | 更新日期: 2023-09-27 17:50:46

由于某种原因,我无法打开有关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。oledbeexception未被用户代码处理HResult = -2147217833消息=字段太小,无法接受您尝试添加的数据量。请尝试插入或粘贴更少的数据。Source=Microsoft Office Access Database Engine

与其猜测哪一列有太多数据,不如通过编程确定哪一列有问题。我可以吗?如何?

我可以通过编程确定(OLEDB)超出了哪个列长度吗?

有关于如何在MSDN中查询底层模式信息的非常详细的解释,从检索数据库模式信息开始。

免责声明:我从来没有尝试过对Access数据库使用这个

在阅读了你上面的评论之后,我很清楚你的Access文件只是把它的设计器视图锁定了。通常情况下,你应该能够通过简单地按住Shift键解锁它们,双击文件并保持按住Shift,直到Access启动并运行。

从那时起,你将有完整的访问表,查询等,以及随之而来的,你的数据库规范。这比动态访问要好得多。