如何将@放入选择SQL语句中

本文关键字:选择 SQL 语句 | 更新日期: 2023-09-27 18:30:22

我必须使用"@"(我不知道它的名字)。我可以在更新删除或插入语句中使用它,但我不能在那里使用它 必须声明 URL

       //SQL string to count the amount of rows within the OSDE_Users table
        string sql = "SELECT * FROM RSSFeeds where URL = @URL";
        SqlCommand cmd = new SqlCommand(sql, Connect());
        cmd.Parameters.Add("@URL", SqlDbType.VarChar, 500).Value = url;
        closeConnection();
        SqlDataAdapter adapt = new SqlDataAdapter(sql, Connect());
        DataSet ds = new DataSet();
        adapt.Fill(ds);
        // result of query filled into datasource
        adapt.Dispose();
        closeConnection();
        return ds;

如何将@放入选择SQL语句中

我只能假设这一行不正确:

cmd.Parameters.Add("@URL", SqlDbType.Int).Value = url;

可能 URL 不是 Int,而是 NVarChar 或其他字符类型
如果是这种情况,请以这种方式
更改您的线路(255 是字段 URL 的假定长度)

cmd.Parameters.Add("@URL", SqlDbType.NVarChar, 255).Value = url;

顺便说一下,"@"被称为"参数前缀"

编辑

:看到OP的最后一次编辑,我更新了我的答案,以显示我认为正确的方法。

   //SQL string to count the amount of rows within the OSDE_Users table 
    string sql = "SELECT * FROM RSSFeeds where URL = @URL"; 
DataSet ds = new DataSet(); 
    using(SqlConnection cnn = Connect())
    using(SqlCommand cmd = new SqlCommand(sql, cnn)) 
    {
        cmd.Parameters.Add("@URL", SqlDbType.VarChar, 500).Value = url; 
        using(SqlDataAdapter adapt = new SqlDataAdapter(cmd))
        {
            adapt.Fill(ds); 
        }
    }
    return ds; 

我更改了什么:

  • 将每个一次性物品封装在一个using语句中保证关闭/处置对象
  • 只调用 Connect() 一次并捕获返回的 SqlConnection重用而不创建另一个
  • 使用之前创建的 SqlCommand 创建了 SqlDataAdapter(因此@URL参数到达 Sql)

OP 使用了 closeConnection(),我们看不到此方法的内部,但我认为using足以关闭和处理连接。

编辑:创建SqlDataAdapter的行应该是

using(SqlDataAdapter adapt = new SqlDataAdapter(cmd))
cmd.Parameters.AddWithValue("@URL", url);

应该工作