出於某種原因,我無法打開有問題的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如果我能以編程方式確定哪一列是有問題的,那麼很好。我可以嗎?怎麼樣?
您是否研究過通過標準ADO.NET路徑獲取模式信息?像IDataReader.GetSchemaTable方法一樣? – Crono
我還必須問:爲什麼你必須動態獲取數據庫規範才能開始?如果您從一開始就知道數據庫字段類型,長度和約束條件,那麼您的代碼將更加健壯! :p – Crono
@Crono:你說得對,但是,如前所述,當我用Access打開MDB文件時,它不允許我看到設計視圖;我不知道爲什麼。 –