これは私を苛立たせてきました。私はまだ有効な答えや解決策を見つけていません。多くの投稿と返信がありましたが、実際に機能する解決策を説明しているものはありません.
Access の脆弱な構成テーブルは、次のもので構成されます。
Field Name Data Type
cveid Test
logicaltest Memo
完全に空の脆弱な構成テーブルに完全に一意のデータが入力される関連コード ビット:
mycon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + accessDb + ";Persist Security Info=False");
mycon.Open();
...
insertCommand = new OleDbCommand("INSERT INTO vulnerableconfiguration (cveid, logicaltest) VALUES (@cveid, @logicaltest);", mycon);
insertCommand.Parameters.Add("@cveid", OleDbType.Char).Value = cve_id);
insertCommand.Parameters.Add("@logicaltest", OleDbType.LongWChar).Value = vulnerable_configuration);
insertCommand.ExecuteNonQuery();
logicaltest フィールドの値が切り捨てられており、その理由がわかりません。1st レコードも 780 文字から 370 文字に切り捨てられます。すべてのメモ フィールドは、メモ サイズの制限に収まる必要があります。エラーはありません。私はそれをデバッグし、insertCommand パラメータに設定された値は完全な値を持っていますが、コマンドが実行されると、Access DB は切り捨てられた値を持っています。
誰かにアイデアがあれば、この問題を抱えているすべての人にとって素晴らしいことです。
http://allenbrowne.com/ser-63.htmlを参照しないでください。これらのケースのいずれも、この単純な Access 挿入ケースを扱っていません。また、Access 2007/2010 にはメモ データ型の最大長設定がなく、大きくなるはずです。
Access を使用している理由 これは、検索目的で使用される Access DB のインポート ツール用です。他の誰かが簡単なクエリとレポートを作成して、そこから必要な情報を取得できます。バックエンドとして使用されておらず、MSSQL はこの目的には重すぎます。
ありがとうございました!
アップデート
メモ フィールド パラメーターを OleDbType.LongWChar に切り替えましたが、Access レコードが入力されると、同じ切り捨てが行われます。