为什么SQL查询只工作时从VS而不是外部运行
本文关键字:外部 运行 VS 查询 SQL 工作 为什么 | 更新日期: 2023-09-27 18:10:01
我有一个搜索文本框和一个提交按钮,用户可以在其中输入名称并点击按钮以获得结果。我遇到的唯一问题是当我从VS运行网站时,查询返回结果,但当我将网站放入web服务时并使用localhost链接之外的链接访问它,它不起作用(显示Failed: Not not found in Database
)。
我的localhost
链接与搜索查询:http://localhost:53647/PDFFormsNew/searchcreate.aspx
(通过VS运行)
我在VS之外访问的IIS链接不适合搜索查询:http://devserver-svr-dev:85/searchcreate.aspx
知道它为什么会导致它以及如何修复它吗?
我包含了执行查询的代码片段:
string cString = "Data Source=svr-db;Initial Catalog=test-db;User Id=myusr;Password=p@$$w0rd;";
protected void btnValidateName_Click(object sender, EventArgs e)
{
this.sqlQuery();
}
public void sqlQuery()
{
tc.Text = "HERE";
Conn = new SqlConnection(cString);
Conn.Open();
//nameE = '%'+txtName.Text+'%';
nameE = '%' + RemoveSpecialCharacters(txtName.Text) + '%';
sqlCode = "SELECT * FROM [test-db].[dbo].[TablePDFTest] WHERE [name] LIKE @name"; //allow user to enter partial
using (SqlCommand command = new SqlCommand(sqlCode, Conn))
{
//command.CommandType = CommandType.Text;
command.Parameters.AddWithValue("name", nameE);
using (reader = command.ExecuteReader())
{
if (reader.HasRows)
{
rptContent.DataSource = reader;
rptContent.DataBind();
lblIsValid.Text = "Success: Name found in Database";
lblIsValid.ForeColor = System.Drawing.ColorTranslator.FromHtml("#009900");
//btnGeneratePDF.Visible = true;
}
if (!reader.HasRows)
{
rptContent.DataSource = null;
rptContent.DataSourceID = null;
rptContent.DataBind();
lblIsValid.Text = "Failed: Name not found in Database";
lblIsValid.ForeColor = System.Drawing.ColorTranslator.FromHtml("#990000");
//btnGeneratePDF.Visible = false;
}
}
}
Conn.Close();
}
public static string RemoveSpecialCharacters(string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str)
{
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.')
{
sb.Append(c);
}
}
return sb.ToString();
}
问题是您传递了无效的字符串作为参数。
语句是"SELECT * FROM [test-db].[dbo].[TablePDFTest] WHERE [name] LIKE @name"
,你传递
command.Parameters.AddWithValue("name", nameE);
but should
command.Parameters.AddWithValue("@name", nameE);
p。
你不应该在SQL查询中使用*
,你应该只询问你真正要使用的字段。同样,您不使用任何应该使用count(*)
的数据。使用count,您应该能够获得一些性能。