查询在SQL Server管理研究中运行良好,但未通过我的Windows窗体应用程序(C#)运行
我正在开发一个将数据从SQL SERVER传输到ORACLE的应用程序。我在sql server中有一个oracle的链接对象,我将数据直接从sql server插入到oracle(这是必需的)。问题是,我的INSERT语句给了我错误 当我通过我的应用程序执行它时,它在SQLServerManagementStudio中完美地运行。以下是插入查询:查询在SQL Server管理研究中运行良好,但未通过我的Windows窗体应用程序(C#)运行,c#,sql-server,oracle,winforms,linked-server,C#,Sql Server,Oracle,Winforms,Linked Server,我正在开发一个将数据从SQL SERVER传输到ORACLE的应用程序。我在sql server中有一个oracle的链接对象,我将数据直接从sql server插入到oracle(这是必需的)。问题是,我的INSERT语句给了我错误 当我通过我的应用程序执行它时,它在SQLServerManagementStudio中完美地运行。以下是插入查询: INSERT INTO OPENQUERY(ORACLE, 'SELECT * FROM DB.SQL_table') SELECT * FROM
INSERT INTO OPENQUERY(ORACLE, 'SELECT * FROM DB.SQL_table') SELECT * FROM table where c_date = '20170316';
这是我的代码:
sql_command = new SqlCommand();
sql_command.Connection = mssql;
ora_command = new OracleCommand();
ora_command.Connection = oracle;
string sub_query = "SELECT COUNT(*) FROM table T WHERE T.C_Date = '" + date.Year + month + day + "'";
sql_command.CommandText = sub_query;
var sql_c = sql_command.ExecuteScalar();
string ora_query = "SELECT COUNT(*) FROM SQL_table T WHERE T.C_Date = '" + date.Year + month + day + "'";
ora_command.CommandText = ora_query;
var ora_c = ora_command.ExecuteScalar();
if (Convert.ToInt32(sql_c)!=Convert.ToInt32(ora_c))
{
sql_command.CommandText = "INSERT INTO OPENQUERY(ORACLE, 'SELECT * FROM DB.SQL_table') SELECT * FROM table where c_date = '" + date.Year + month + day + "';";
var sql_count = sql_command.ExecuteNonQuery();
if (Convert.ToInt32(sql_count) != 0)
{
Status = "Done Uploading Data.\n\nLast Updated on " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
}
else
{
Status = "Some Error Occured, Please Check.\n\nLast Checked on " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
}
}
else
{
Status = "No missing data found.\n\nLast Checked on " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
}
PS:如果您需要更多信息,我随时准备提供。检查
date.Year+month+day
value。可能您传递了一个不返回任何内容的错误值?我怀疑DB。SQL\u表
和表
的列计数彼此不同(更具体地说,SQL\u表
的列数比表
多/少),因此它不会工作。那么,您能提供这两个表的列列表吗?您的大多数代码(在查询执行之前和之后)似乎与问题无关。是否可以将其减少到必要的最小值?检查表的架构。非常感谢大家,这是IDE的问题。重新启动IDE并重建解决方案解决了我的问题。非常感谢大家的回复。请检查date.Year+month+day
value。可能您传递了一个不返回任何内容的错误值?我怀疑DB。SQL\u表
和表
的列计数彼此不同(更具体地说,SQL\u表
的列数比表
多/少),因此它不会工作。那么,您能提供这两个表的列列表吗?您的大多数代码(在查询执行之前和之后)似乎与问题无关。是否可以将其减少到必要的最小值?检查表的架构。非常感谢大家,这是IDE的问题。重新启动IDE并重建解决方案解决了我的问题。非常感谢大家的回复。