C#SQL字符串格式
我不熟悉C#SQL字符串格式,c#,.net,sql,C#,.net,Sql,我不熟悉.net/C。来自PHP和一些Java,我发现这些新语言既有趣又富有挑战性 我对sql字符串有问题 string query = @"select * from Users where role='member' and SUBSTRinG(lname, 1, 1) = '"+querystring + "' ORDER BY lname ASC"; 在我看来,这很好。但是,当运行我的解决方案并在查询不起作用时输出查询时,我会将其作为输出: select * from Users w
.net/C
。来自PHP和一些Java,我发现这些新语言既有趣又富有挑战性
我对sql字符串有问题
string query = @"select * from Users where role='member' and
SUBSTRinG(lname, 1, 1) = '"+querystring + "' ORDER BY lname ASC";
在我看来,这很好。但是,当运行我的解决方案并在查询不起作用时输出查询时,我会将其作为输出:
select * from Users where role='member' and SUBSTRinG(lname, 1, 1)
= ' O ' ORDER BY lname ASC
这将输出到我的Firebug控制台(使用此查询的页面通过AJAX访问)
它们是我的被转换成代码版本的原因吗,即'
谢谢您可以为单引号提供转义序列,方法是放置两个单引号“”,以便在SQL中将其视为单引号。否则,它将理解为SQL中特定列值字符串的开始或结束。
使用
和#39替换单引号也是首选,但在C#中最好使用两个单引号;您应该使用SqlCommand执行查询,并使用参数集合防止sql注入
您的查询似乎很好-问题可能是您运行它的方式或提供的参数。更新您的问题,提供更多关于您期望的内容和正在发生的事情的详细信息,包括生成的任何错误消息
下面是如何将数据从sql表获取到c#数据表对象的一般指南
SqlConnection conn = new SqlConnection("YourConnectionString");
SqlCommand cmd = new SqlCommand(@"select * from Users where role='member' and
SUBSTRinG(lname, 1, 1) = @query ORDER BY lname ASC");
cmd.Parameters.AddWithValue("@query", querystring);
DataTable resultTable = new DataTable();
try
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(resultTable);
} finally {
if (conn.State != ConnectionState.Closed) conn.Close();
}
Console.WriteLine(String.Format("Matched {0} Rows.", resultTable.Rows.Count));
请向我们展示你的代码这段代码让我们尖叫你能告诉我们你在这里想要实现什么吗?你如何传递你的查询?改用SqlParameters。这样,您就不需要包含单引号,也不会冒允许SQL注入的巨大风险。根据经验,永远不要让用户的任何内容直接进入SqlCommand文本。当我输出cmd.CommandText时,我会得到原始问题中提到的字符串。。。所以没有结果returned@nmyster您不需要输出命令文本。通过SQLServerManagementStudio或类似工具直接对SQLServer运行查询,检查查询是否应返回任何值。你真的应该包括你的代码;我们都在猜测。