C# 从excel工作表读取时出现无效字符异常

C# 从excel工作表读取时出现无效字符异常,c#,.net,sql,oracle,excel,C#,.net,Sql,Oracle,Excel,我有一张excel表格。我在excel工作表中的特定单元格中编写一个查询,然后通过我的C代码调用该查询。我已将该单元格声明为strParam1。因此,strParam1包含我在excel工作表中键入的任何查询。代码如下:- public void UpdateDatabase(String strParam1, int row) { System.Data.OracleClient.OracleConnection conn = new System.Da

我有一张excel表格。我在excel工作表中的特定单元格中编写一个查询,然后通过我的C代码调用该查询。我已将该单元格声明为strParam1。因此,strParam1包含我在excel工作表中键入的任何查询。代码如下:-

public void UpdateDatabase(String strParam1, int row)
        {
            System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection();
            conn.ConnectionString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.144)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)));UID=mwm;PWD=mwm";
            try
            {
                conn.Open();
                OracleCommand command = conn.CreateCommand();
                command.CommandText = strParam1.Trim();
                OracleDataReader reader = command.ExecuteReader();
                command.Dispose();
            }
            catch (Exception ex)
            {
                ExcelRecorder(ex.Message, row);
            }
            finally
            {
                conn.Close();
            }
        }
当到达ExecuteReader时,它抛出一个异常,并找到无效字符。在excel工作表中,我键入了Select*from\Task\; 因为Task是一个oracle关键字,所以我重新构造了上面的查询。但是,查询没有执行。如果我输入下面的代码并运行它,一切都很好

command.CommandText = "Select * from \"Task\""; 

怎么了?有什么特殊的格式我必须做吗?从excel表格中读取数据也没有问题。我彻底测试了它。所以,这与我的例外无关

从Excel单元格中读取字符串并将其放入带引号的字符串变量中时,无需添加\来转义。 为了证明这一点,只需在UpdateDatabase方法上设置一个断点,然后查看strParam1变量。
您可以看到它包含引号,而当您将直接赋值给command.CommandText时,您需要转义字符串文字。

C中的\是转义,excel中的文本只能包含原始文本select*fromTask@Me.Name不需要分号?仅当查询本身需要分号时,例如在附加多个sql语句时。纯粹对于Excel到C的部分,可以忽略它。