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

C# C-sql更新代码。Access数据库中的列太多,c#,sql,ms-access,oledb,C#,Sql,Ms Access,Oledb,我有一个c程序,可以更新access数据库文件.mdb中每个表中的2列。我更新的列是短字符串类型,在更新之前,我还将它们的大小更改为255。我有15个文件,我的代码为前7个数据库工作,第8个文件崩溃。我分别更新每个代码,并且在数据库中间崩溃。 System.Data.OleDb.OLEDBEException:“记录太大。” 正在崩溃的查询字符串: 更新订单集SYMBOLE='AGLX19.A8E',SYMBOLE2='AWLX19.A8E@P516@PQ@P517@PQ@P518@PQ@P51

我有一个c程序,可以更新access数据库文件.mdb中每个表中的2列。我更新的列是短字符串类型,在更新之前,我还将它们的大小更改为255。我有15个文件,我的代码为前7个数据库工作,第8个文件崩溃。我分别更新每个代码,并且在数据库

中间崩溃。 System.Data.OleDb.OLEDBEException:“记录太大。”

正在崩溃的查询字符串: 更新订单集SYMBOLE='AGLX19.A8E',SYMBOLE2='AWLX19.A8E@P516@PQ@P517@PQ@P518@PQ@P519@PQ'其中代码='2862411'

我也在在线检查器中仔细检查了sql字符串。 我也在谷歌上搜索过,发现这个错误,可能是因为我数据库中的列太多了,实际上当我打开数据库文件时,大约有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.OLEDBEException:“CREATE TABLE语句中出现语法错误。”

查询字符串: 创建表格CARTEO作为SELECT*FROM CARTE,其中CODE='0801733'


字段限制为2kB,不包括备注和OLE。大约有220列字段,您很可能会达到该限制


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

请尝试将您的问题限制为一个问题。您复制表的语法不正确,MS Access使用SELECT。。。将查询复制到表中,而不是按选择方式创建表
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();
        }
    }