【问题标题】:Query SQL Server using session variable使用会话变量查询 SQL Server
【发布时间】:2021-05-25 23:15:41
【问题描述】:

我正在尝试根据用户变量(使用 ASP.NET 和 C#)查询 SQL Server 数据库表。我希望能够从垃圾应用信息表中仅提取用户的唯一记录,其中农场所有者名称等于变量名称(这是一个字符串)。

这是我的部分代码:

conn.Open();
WasteAppData = "SELECT * FROM [WASTE APPLICATION INFORMATION] WHERE [FARM OWNER] = (user variable) ";

SqlCommand com = new SqlCommand(WasteAppData, conn);

GridView1.DataSource = com.ExecuteReader();
GridView1.DataBind();

如果我用表格列中的实际值替换“(用户变量)”,它确实可以正常工作。像这样:'Joe Smith' 我试过引用从另一个网络表单中提取的变量,但没有运气......我认为我的语法不正确?任何帮助都会很棒!

【问题讨论】:

  • I've tried referencing the variable .NET 中没有这样的功能,这意味着您尝试在 SQL 注入错误中连接或注入字符串。请改用参数化查询。
  • 你说“我尝试过引用变量...但是没有用。”向我们展示那个代码。
  • 另外,请给我们具体的错误消息和/或行为。有很多事情会导致客户端-服务器数据库查询失败,因此仅仅说它不起作用通常不足以找出问题所在。

标签: asp.net sql-server


【解决方案1】:

你需要这样做:

WasteAppData = "SELECT * FROM [WASTE APPLICATION INFORMATION] WHERE [FARM OWNER] = @FarmOwn";
using (SqlCommand cmdSQL = new SqlCommand(WasteAppData , conn)
 {
    cmdSQL.Parameters.Add("@FarmOwn", SqlDbType.NVarChar).Value = strFarmOwnwer;
    cmdSQL.Connection.Open();
    GridView1.DataSource = cmdSQL.ExecuteReader;
    GridView1.DataBind();
}

在这种情况下,“strFarmOwner”将被替换为包含您想要的值的实际变量。

【讨论】:

  • 阿尔伯特,我已经解决了!我真的很感激!我还发现了其他一些问题……缺少命名空间等。这是我使用 stackoverflow 的第一天,所以我是 1/1!相当不错的平均水平。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 2019-12-11
相关资源
最近更新 更多