相关疑难解决方法(0)

SqlParameter和IN语句

我需要以下查询:

createList(string commaSeparatedElements) {
    ...
    SqlCommand query = new SqlCommand("SELECT * FROM table WHERE id IN ("+commaSeparatedElements+")");
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想使用参数化查询来编写它,因此检查字符串中的每个元素以防止Sql-Injections.

伪代码:

createList(string commaSeparatedElements) {
    ...
    SqlParameterList elements = new SqlParameterList("@elements", SqlDbType.Int);
    SqlParameterList.Values = commaSeparatedElements.split(new Char[1] {','});
    SqlCommand query = new SqlCommand("SELECT * FROM table WHERE id IN (@elements)");
    query.Parameters.Add(elements);
    ...
}
Run Code Online (Sandbox Code Playgroud)

C#中是否存在类似的内容,或者我必须自己编写?

编辑:谢谢你的所有答案.当我尽量不使用代码时,我不理解(在过去的日子里有太多不好的经历),精巧和表值参数,即使它们可能完全满足我的需求,也是禁止的.我刚做了一个循环.

string[] elements = commaSeparatedElements.split(new Char[1] {','});
StringList idParamList = new StringList();
for(int i=0;i<elements.Count;i++) {
    query.Parameters.AddWithValue("@element"+i,Convert.ToInt32(elements[i]));
    idParamList.Add("@element" + i);
}
SqlCommand query = new SqlCommand("SELECT * FROM table …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server

5
推荐指数
2
解决办法
8489
查看次数

在c#中将多个参数化变量添加到数据库

我想在这里做一些simulair:如何在不重复声明的"INSERT INTO dbo.Blah"部分的情况下插入多行? 除了在一个查询中执行此操作(快于几十个)之外,我还想在输入来自Web时进行参数化.

目前我有

foreach(string data in Scraper){
            SqlConnection conn = new SqlConnection(WebConfigurationManager.AppSettings["ConnectionInfo"].ToString());
            string query = "INSERT INTO DATABASE('web',@data)";
            SqlCommand sqlCommand= new SqlCommand(query, conn);
            sqlCommand.Parameters.AddWithValue("@data", data);
            Command.executeNonQuery(); 
            conn.close();
}
Run Code Online (Sandbox Code Playgroud)

这有点笨拙(注意真实的例子有更多的colums但这会让事情更加混乱).

c# sql sql-server sql-server-2008

2
推荐指数
1
解决办法
454
查看次数

标签 统计

c# ×2

sql ×2

sql-server ×2

sql-server-2008 ×1