C# C新手字符串连接问题
我正在从事的项目中有以下代码:C# C新手字符串连接问题,c#,string,concatenation,C#,String,Concatenation,我正在从事的项目中有以下代码: foreach(DataTable myTable in myDataSet.Tables) { string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = "'" + myTable.TableName + "'" MessageBox.Show(sSQL); } 出于某种原因,字符串中没有添加第二个撇号。事实上,我试图在myTable.TableName之后追加的任何内容都不会被追加。如果我用一个表
foreach(DataTable myTable in myDataSet.Tables)
{
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = "'" + myTable.TableName + "'"
MessageBox.Show(sSQL);
}
出于某种原因,字符串中没有添加第二个撇号。事实上,我试图在myTable.TableName之后追加的任何内容都不会被追加。如果我用一个表的名称替换myTable.TableName,它会工作!如果我使用一个变量,并将其设置为表名,它也可以工作
有人能告诉我我做错了什么吗
谢谢你提供的任何信息 您的字符串应该如下所示:
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'";
foreach(DataTable myTable in myDataSet.Tables)
{
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" +
myTable.TableName.Replace("'", "''") + "'";
MessageBox.Show(sSQL);
}
您的字符串应如下所示:
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'";
foreach(DataTable myTable in myDataSet.Tables)
{
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" +
myTable.TableName.Replace("'", "''") + "'";
MessageBox.Show(sSQL);
}
试一试
请注意,此代码对SQL注入非常开放,这是一个巨大的安全问题。。。
最好使用带参数的查询 试试看
请注意,此代码对SQL注入非常开放,这是一个巨大的安全问题。。。
最好使用带参数的查询 若要在字符串中添加转义字符,您需要在前面添加转义字符:\若要在字符串中添加转义字符,您需要在前面添加转义字符:\您的转义字符太多了 应该是
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'"
还有,为什么不使用像LINQ这样的实体框架呢?您的实体框架太多了
应该是
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'"
还有,为什么不使用像LINQ这样的实体框架呢?它甚至不会编译,而是在第一个撇号之前结束字符串
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'"
这甚至不会编译,您将在第一个撇号之前结束字符串
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'"
试试这个
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'";
试试这个
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'";
太多的双引号 为了便于阅读,您可以尝试以下方法:
string sSQL = string.Format("SELECT `Name` FROM _Columns WHERE `Table` = '{0}'", myTable.TableName)
应该完成同样的事情。双引号太多了 为了便于阅读,您可以尝试以下方法:
string sSQL = string.Format("SELECT `Name` FROM _Columns WHERE `Table` = '{0}'", myTable.TableName)
应该完成同样的事情。没有添加它,因为您在字符串的前面结束了它 看看string.Format,它是构造字符串的另一种方法
正如其他人所说,tat代码甚至不应该编译。它没有被添加,因为您正在字符串的前面结束它 看看string.Format,它是构造字符串的另一种方法
正如其他人所说,tat代码甚至不应该编译。其他人已经回答了这个问题,但在这些答案之上,使用string.Format更容易
其他人已经回答了这个问题,但是在这些答案之上,使用string.Format更容易
在我看来,应该避免在代码中构建连接的SQL字符串。做那样的事纯粹是邪恶的 但是,如果必须,请尝试以下方法:
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'";
foreach(DataTable myTable in myDataSet.Tables)
{
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" +
myTable.TableName.Replace("'", "''") + "'";
MessageBox.Show(sSQL);
}
在我看来,应该避免在代码中构建连接的SQL字符串。做那样的事纯粹是邪恶的 但是,如果必须,请尝试以下方法:
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" + myTable.TableName + "'";
foreach(DataTable myTable in myDataSet.Tables)
{
string sSQL = "SELECT `Name` FROM _Columns WHERE `Table` = '" +
myTable.TableName.Replace("'", "''") + "'";
MessageBox.Show(sSQL);
}
嘿,为什么要投否决票?这是一个非常合理的问题:你有没有试着编译这段代码?”因为它不会!抱歉-您说得对,这行应该是:string sSQL=SELECT Name FROM_Columns,其中Table=+'+myTable.TableName+';您的意思是从_列中选择'Name',其中'Table`=+'+myTable.TableName+';?这样更具可读性嘿,为什么投反对票?这是一个非常合理的问题:你有没有试着编译这段代码?”因为它不会!抱歉-您说得对,这行应该是:string sSQL=SELECT Name FROM_Columns,其中Table=+'+myTable.TableName+';您的意思是从_列中选择'Name',其中'Table`=+'+myTable.TableName+';?通过这种方式更具可读性谢谢您的回复。我也试过了,但还是得到了同样的结果。Re:LINQ:要使用LINQ,我需要某种数据库“提供者”层来处理与数据库的连接吗?我正在尝试使用windows installer数据库,而不是标准的SQL server、Sybase等。感谢回复。我也试过了,但还是得到了同样的结果。Re:LINQ:要使用LINQ,我需要某种数据库“提供者”层来处理与数据库的连接吗?我正在尝试使用windows installer数据库,而不是标准的SQL server、Sybase等。一定是我的项目中的某些内容导致了这个问题。我创建了一个新项目,尝试了这里提出的所有建议,它们都成功了!但当我在我的项目中尝试时,他们都没有。谢谢大家的帮助…一定是我的项目中的某些东西导致了这个问题。我创建了一个新项目,尝试了这里提出的所有建议,它们都成功了!但当我在我的项目中尝试时,他们都没有。谢谢大家的帮助。。。