C#-sql更新代码。访问数据库中的列太多

时间:2017-10-26 15:02:53

标签: c# sql ms-access oledb

我有一个c#程序,它在我的访问数据库文件(.mdb)的每个表中更新了2列。我更新的列是短字符串类型,我也在更新之前将它们的大小更改为255。我有15个文件,我的代码适用于前7个dbs,并且在第8个文件上崩溃。我正在分别更新每个代码,它在数据库中间崩溃

  

System.Data.OleDb.OleDbException:'记录太大。'

     

崩溃的查询字符串:   UPDATE CARTE SET SYMBOLE =' AGLX19.A8E',SYMBOLE2 =' AWLX19.A8E; @ P516。@ PQ; @ P517。@ PQ; @ P518。@ PQ; @ P519。@ PQ&# 39;在哪里代码=' 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字符串(也在在线检查器中)。 我也在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(从* CARTE中选择*代码=' 0801733');

1 个答案:

答案 0 :(得分:0)

字段限制为2kB(不包括Memo和OLE。对于~220列字段,您可能会达到该限制。

您应该规范化表格,或将某些列转换为备注字段。