我有一张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表中,我从\“Task \”键入了Select *; 由于Task是一个oracle关键字,我已经重构了上面的查询。但是,查询没有执行。如果我输入以下代码并运行它,一切都很好。
command.CommandText = "Select * from \"Task\"";
有什么问题?我必须做什么特殊格式吗?从excel表中读取没有问题。我彻底测试了它。所以,这与我的例外无关。
答案 0 :(得分:1)
当您从Excel单元格中读取字符串并将其放入带引号的字符串变量中时,您无需添加\
来进行转义。
为了证明这一点,只需在UpdateDatabase方法上放置一个断点,然后查看strParam1 var
您可以看到它包含引号,而当您直接分配给command.CommandText时,您需要转义字符串文字。