我必须使用“@”(我不知道它的名字)。我可以在更新删除或插入语句中使用它,但我不能在那里使用它,它给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;
答案 0 :(得分:4)
我只能假设这条线不正确:
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
语句中的每个一次性对象封装起来
保证关闭/处置对象 OP使用了closeConnection(),我们没有看到此方法的内部,但我认为using
足以关闭并处理连接。
编辑:创建SqlDataAdapter的行应该是
using(SqlDataAdapter adapt = new SqlDataAdapter(cmd))
答案 1 :(得分:1)
cmd.Parameters.AddWithValue("@URL", url);
应该有效