【发布时间】:2014-03-18 17:58:09
【问题描述】:
由于某种原因,我无法打开相关 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 未被用户代码处理 H结果=-2147217833 Message=该字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴更少的数据。 Source=Microsoft Office Access 数据库引擎"
不必猜测哪一列有太多数据,如果我能以编程方式确定哪一列是有问题的那会很好。我可以吗?怎么样?
【问题讨论】:
-
您是否考虑过通过标准 ADO.NET 路径获取架构信息?喜欢 IDataReader.GetSchemaTable 方法吗?
-
我还必须问:为什么您必须动态获取数据库规范?如果从一开始就知道数据库字段类型、长度和约束,您的代码会更加健壮! :p
-
@Crono:你是对的,但是,如前所述,当我使用 Access 打开 MDB 文件时,它不允许我看到设计视图;我不知道为什么。
-
它可能刚刚被锁定。您是否尝试过按住 Shift 键打开 Access 文件?
标签: c# ms-access oledb oledbexception designview