c# - 如何在 select sql 语句中添加@?

标签 c# sql

我必须使用“@”(我不知道它的名字)。我可以在更新删除或插入语句中使用它,但我不能在它给出的 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;

最佳答案

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

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))

关于c# - 如何在 select sql 语句中添加@?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066073/

相关文章:

sql - 使用perl DBI创建 View 时无法传入参数

mysql - 计算记录之间的时间?

mysql - 有什么办法可以在查询时替换列值吗?

sql - 最佳 OrientDB SQL 查询模拟双方条件的连接

c# - 使用 Webservice 填充 Jquery 数据表

c# - 在 Entity Framework Core 中使用 Fluent API 编写范围数据注释

c# - 跨 session 保留文本字段的 .NET 表单?

C# Google 分析事件类别为空

mysql - 优化大型表上的 SQL 查询

c# - ASP.net 中报告应用程序的最佳架构(带有动态源)