我一直收到这个错误database schema has changed near "1": syntax error。
我不会在代码中更改我的架构。这是我制定模式的代码。希望尝试每一个答案,以便您张贴它。此代码用于将数据库传输到另一个数据库程序。因此,它必须与多个数据库程序兼容。
public DataTable GetSchemaTable(string schema, string nameTable)
{
switch (m_dbType)
{
case dbTypeEnum.Sqlite:
//Make the schema of the source table
MakeConnectionString();
string fullTableName = schema.Length > 0
? string.Format("[{0}].[{1}]", schema, nameTable)
: string.Format("[{0}]", nameTable);
if (!string.IsNullOrEmpty(fullTableName))
{
string sql = string.Format("SELECT * FROM {0} LIMIT 1", fullTableName);
DataTable dtSchemaSource;
try
{
using (IDataReader rdr = ReadOnlyForwardOnly(sql))
{
dtSchemaSource = rdr.GetSchemaTable();
}
}
finally
{
CloseConnection();
}
if (dtSchemaSource == null)
{
throw new RadGeneralException("rdr.GetSchemaTable() returns null with sql = " + sql);
}
return dtSchemaSource;
}
break;
default:
//Make the schema of the source table
MakeConnectionString();
string fullTableName = schema.Length > 0
? string.Format("[{0}].[{1}]", schema, nameTable)
: string.Format("[{0}]", nameTable);
string sql = string.Format("SELECT TOP 1 * FROM {0}", fullTableName);
DataTable dtSchemaSource;
try
{
using (IDataReader rdr = ReadOnlyForwardOnly(sql))
{
dtSchemaSource = rdr.GetSchemaTable();
}
}
finally
{
CloseConnection();
}
if (dtSchemaSource == null)
{
throw new RadGeneralException("rdr.GetSchemaTable() returns null with sql = " + sql);
}
return dtSchemaSource;
}
}这是sqlite模式已经更改了arror的部分。
StringBuilder sbColList = new StringBuilder();
nCol = 0;
identityColInBothTables = false;
//Make the schema of the source table
DataTable dtSchemaSource = objDbSource.GetSchemaTable(SchemaSource, Name);
//Make the schema of the target table
DataTable dtSchemaTarget = objDbTarget.GetSchemaTable(SchemaTarget, Name);发布于 2015-09-02 06:43:57
我相信你需要使用的不是SELECT TOP 1 *,而是SELECT * FROM .... LIMIT 1
发布于 2015-09-02 06:45:46
您需要检查nameTable为空还是空
if(!string.IsNullOrEmpty(fullTableName))
string sql = string.Format("SELECT * FROM {0} LIMIT 1", fullTableName);SQLLITE的
SELECT * FROM Table_Name LIMIT 1;for SQL
SELECT TOP 1 * FROM Table_Name;发布于 2015-09-02 06:56:46
你能试试这个吗?
SELECT * FROM SAMPLE_TABLE ORDER BY ROWID ASC LIMIT 1https://stackoverflow.com/questions/32346105
复制相似问题