アクセスデータベースファイル(.mdb)の各テーブルに2列を更新するc#プログラムがあります。私がupdatnigしている列は短い文字列型で、更新する前にサイズを255に変更しています。私は15のファイルがあり、私のコードは最初の7 dbsのために働いていて、8番目のファイルでクラッシュします。別に各コードを更新していて、データベースの中央付近でクラッシュする。C#-sqlの更新コード。アクセスデータベースの列が多すぎます
System.Data.OleDb.OleDbException: 'レコードが大きすぎます。'クラッシュしている
クエリ文字列:。。。 UPDATE CARTE SET SYMBOLE = 'AGLX19.A8E'、SYMBOLE2 =「AWLX19.A8E; @ P516 @ PQ; @ P517 @ PQ; @ P518 @ PQ; @ P519。 @PQ 'WHERE CODE =' 2862411 ';
private void UpdateSYMBOLEinDatabase(string tableName, string code)
{
if (symboleMdb[0] == "")
return;
string queryString = "UPDATE " + tableName +
" SET SYMBOLE = '" + symboleMdb[0] + "', SYMBOLE2 = '" + symboleMdb[1] + "' " +
"WHERE CODE = '" + code + "';";
if (symboleMdb[1] == "")
queryString = queryString.Replace(", SYMBOLE2 = ''", "");
using (OleDbConnection connectionInput = new OleDbConnection(connectionStringInput))
using (OleDbCommand command = new OleDbCommand(queryString, connectionInput))
{
connectionInput.Open();
command.ExecuteNonQuery();
command.Dispose();
}
}
私は(もオンラインチェッカーに)慎重にチェックSQL文字列をhaved。 私はまた、Googleの検索し、このエラーは、実際には私がdbファイルを開いているときに私のデータベースでは、あまりにも多くの列に接続されていることが判明した、約220列です。しかし、私は列をプログラムで計数しているときに、約878列(前後の短い文字列型の長さを変更する前後)があることを示しています。他のテーブルの場合、正しいカウントが表示されます。
テーブルをコピーしていることがわかりました。しかし、実際には私もそれをすることはできません。
private void CopyDeleteCopyDeleteQuery(string tableName)
{
string queryString = "CREATE TABLE " + tableName + "O"+
" AS (SELECT * FROM " + tableName +
" WHERE CODE='0801733');";
using (OleDbConnection connectionInput = new OleDbConnection(connectionStringInput))
using (OleDbCommand command = new OleDbCommand(queryString, connectionInput))
{
connectionInput.Open();
command.ExecuteNonQuery();
command.Dispose();
}
}
System.Data.OleDb.OleDbException: 'CREATE TABLEステートメントの構文エラー'
クエリ文字列: CREATE TABLE CARTEO AS(SELECT * FROM CARTE WHERE CODE = '0801733');
テーブルをコピーする構文が正しくない場合、MS Accessは 'CREATE TABLE AS SELECT'ではなくSELECT ... INTOを使用してテーブルにクエリをコピーします。 –