C# 如何在C SQL查询中使用X列长度对多个列名进行string.format
我想从表中选择{0},{1},…,但在尝试字符串时遇到问题。请格式化我拥有的列名,但不确定我拥有多少列名。这是我到目前为止所拥有的C# 如何在C SQL查询中使用X列长度对多个列名进行string.format,c#,mysql,C#,Mysql,我想从表中选择{0},{1},…,但在尝试字符串时遇到问题。请格式化我拥有的列名,但不确定我拥有多少列名。这是我到目前为止所拥有的 String query = "SELECT"; for (int i = 0; i < requestedColumns.Count; i++) { query += " {" + i.ToString() + "},"; } query = query.Remove(query.Length - 1) + " WHERE id=@id LIMIT
String query = "SELECT";
for (int i = 0; i < requestedColumns.Count; i++)
{
query += " {" + i.ToString() + "},";
}
query = query.Remove(query.Length - 1) + " WHERE id=@id LIMIT 1";
这就是我遇到麻烦的地方:
for (int i = 0; i < requestedColumns.Count; i++)
{
query = String.Format(query,requestedColumns[i]);
}
这是我得到的错误:
基于Indexzero的必须大于或等于零,且小于参数列表的大小
我不知道如何格式化语法,希望您能提供帮助。您可以使用
谢谢,这对SQL注入的保护安全吗?@kevinyu,因为您设置了列名,所以不能使用SQL参数。即使您使用String.Format或String.Join,您也需要验证用户输入
var query = "SELECT " +string.Join(",", requestedColumns);
var query = "SELECT " +string.Join(",", requestedColumns) + " WHERE id=@id LIMIT 1";