我希望在从C#执行的SQL Server查询中包含文件路径。文件路径从textBox获取,该turn由打开的文件对话框提供。SQL server查询包含在以下字符串中:
string strSqlAcctSelect = String.Format("SELECT Code AS dhAccountType,
Name as dhAcctName
INTO {0} " + "FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0', 'Excel 8.0; DATABASE =
{1}', 'SELECT * FROM " + "[Sheet1$]')", strAcctTabName, this.textBoxAcctPath.Text);其中,在运行时:
this.textBoxAcctPath.Text = "J:\\CCCDataVic\\RMH\\PE1006Data\\DHCC.xls";当然,当这个字符串解析回屏幕时,文件路径字符串看起来应该是这样的:'J:\CCCDataVic\RMH\PE1006Data\DHCC.xls‘。
问题是:如何在C#中使用文字"\“(单反斜杠)包含包含路径的字符串,而不解析查询"\”(双反斜杠)?
无论您做什么,字符串都会被解析为包含双反斜杠的SQL,这是SQL不喜欢的。
发布于 2011-07-06 12:25:45
尝尝这个
string path = new Uri(this.textBoxAcctPath.Text).AbsolutePath;但是如果您提供了无效路径,这将抛出异常,因此我建议您使用以下代码
string validPath = string.Empty;
if (Uri.TryCreate(this.textBoxAcctPath.Text, UriKind.Absolute, out uri))
{
validPath = uri.AbsolutePath;
}
else
{
throw new ArgumentException("Invalid Path");
}
string strSqlAcctSelect = String.Format("SELECT Code AS dhAccountType,
Name as dhAcctName
INTO {0} " + "FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0', 'Excel 8.0; DATABASE =
{1}', 'SELECT * FROM " + "[Sheet1$]')", strAcctTabName, validPath);发布于 2011-07-06 13:45:17
如果我正确理解了原文,您可能会因为Visual Studio调试器而感到困惑。例如,考虑下面的C#代码:
string str = "a\\b";
MessageBox.Show(string.Format("string {0} has length {1}", str, str.Length));如下所示:字符串a\b的长度为3
在Visual Studio中,调试器将str的内容显示为:
"a\\b",但它在执行时被存储在计算机中(从非常简单的角度来看),即"a\b“。
发布于 2011-07-06 12:29:10
试一试:
string strSqlAcctSelect = String.Format("SELECT Code AS dhAccountType,
Name as dhAcctName
INTO {0} " + "FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0', 'Excel 8.0; DATABASE =
{1}', 'SELECT * FROM " + "[Sheet1$]')", strAcctTabName, this.textBoxAcctPath.Text.Replace(@"\\", @"\"));https://stackoverflow.com/questions/6591358
复制相似问题