如何将@放入选择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;
我只能假设这一行不正确:
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);
应该工作