Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表中生成查询字符串_C#_Asp.net_Database - Fatal编程技术网

C# 从列表中生成查询字符串

C# 从列表中生成查询字符串,c#,asp.net,database,C#,Asp.net,Database,我在会话列表中保存了一些文本,希望将其保存到数据库中。目前, 结果包含4个不同的字符串 List<string> result = (List<string>)HttpContext.Current.Session["Application"]; foreach (string element in result) { //produce a query string? } 所以,我需要创建一组值。但是请记住,这些都是字符串,所以我需要为所有字

我在会话列表中保存了一些文本,希望将其保存到数据库中。目前, 结果包含4个不同的字符串

List<string> result = (List<string>)HttpContext.Current.Session["Application"];

foreach (string element in result)
{
    //produce a query string?        
}
所以,我需要创建一组值。但是请记住,这些都是字符串,所以我需要为所有字符串条目设置\'\'例如:\''“+CorrectAnswer+“\”,否则它不会添加到数据库中


我可以使用字符串生成器吗?如果是这样的话,怎么做?

为什么要构建一个SQL字符串(让您可以访问)?我建议要么使用ORM(,要么使用存储过程(并使用),或者至少应该使用参数化字符串,而不是直接输入值

var parameterizedQuery = new SqlCommand(
    "INSERT INTO JOBQUESTIONS (JOBAPPLICATIONID, 
        QUESTIONTEXT, TYPEID, HASCORRECTANSWER, CORRECTANSWER, ISREQUIRED) 
    VALUES (@JobId, '@QuestionText', @TypeID , @HasCorrectAnswer , '@CorrectAnswer',
        @IsRequired)");

parameterizedQuery.Parameters.Add("@JobId", SqlDbType.Int).Value = 123;

为什么要构建一个SQL字符串(可以打开到)?我建议要么使用ORM(,要么使用一个存储过程来实现这一点(并使用)。或者,至少应该使用一个参数化字符串,而不是直接输入值

var parameterizedQuery = new SqlCommand(
    "INSERT INTO JOBQUESTIONS (JOBAPPLICATIONID, 
        QUESTIONTEXT, TYPEID, HASCORRECTANSWER, CORRECTANSWER, ISREQUIRED) 
    VALUES (@JobId, '@QuestionText', @TypeID , @HasCorrectAnswer , '@CorrectAnswer',
        @IsRequired)");

parameterizedQuery.Parameters.Add("@JobId", SqlDbType.Int).Value = 123;

使用参数化查询。这意味着您只需在sql查询中插入一些临时名称,如

"INSERT INTO tablename VALUEs(@param1, @param2, ...)";
然后定义参数:

cmd.Parameters.Add("@param1", SqlDbType.Int).Value = your actual value";

使用参数化查询。这意味着您只需在sql查询中插入一些临时名称,如

"INSERT INTO tablename VALUEs(@param1, @param2, ...)";
然后定义参数:

cmd.Parameters.Add("@param1", SqlDbType.Int).Value = your actual value";

试着这样做:

var parms = string.Join(",", lst.Select(str => string.Format("'{0}'", str)));

var values = string.Format("VALUES({0})", parms);

正如其他人所建议的,使用参数化查询会更好、更安全,所以如果你选择走那条路线,我会考虑切换到<代码>字典>代码>,而不是<代码>列表 >

var dict = new Dictionary<string, string>();

dict.Add("Foo", "Bar"); //parameter name, value
dict.Add("Bar", "Foo"); //...

dict.Select(d => cmd.Parameters.AddWithValue(string.Format("@{0}", d.Key), d.Value));
var dict=newdictionary();
dict.Add(“Foo”,“Bar”);//参数名称、值
dict.Add(“Bar”、“Foo”);/。。。
dict.Select(d=>cmd.Parameters.AddWithValue(string.Format(“@{0}”,d.Key),d.Value));

尝试以下方法:

var parms = string.Join(",", lst.Select(str => string.Format("'{0}'", str)));

var values = string.Format("VALUES({0})", parms);

正如其他人所建议的,使用参数化查询会更好、更安全,所以如果你选择走那条路线,我会考虑切换到<代码>字典>代码>,而不是<代码>列表 >

var dict = new Dictionary<string, string>();

dict.Add("Foo", "Bar"); //parameter name, value
dict.Add("Bar", "Foo"); //...

dict.Select(d => cmd.Parameters.AddWithValue(string.Format("@{0}", d.Key), d.Value));
var dict=newdictionary();
dict.Add(“Foo”,“Bar”);//参数名称、值
dict.Add(“Bar”、“Foo”);/。。。
dict.Select(d=>cmd.Parameters.AddWithValue(string.Format(“@{0}”,d.Key),d.Value));

请使用参数:)这是一种乞求发生的sql注入攻击。请使用参数:)这是一种乞求发生的sql注入攻击。这是一种更好的方法,但不是OP要求的。先回答问题,然后提供一个更好的解决方案。@JamesJohnson正确的答案并不总是意味着直接的答案。我知道在这方面有一个元帖子,但我找不到它。这将是一个更好的方法,但这不是OP要求的。先回答问题,然后提供一个更好的解决方案。@JamesJohnson正确的答案并不总是意味着直接的答案。我知道这上面有一个元帖子,但我找不到