以前发过二篇关于ObjectDataSource控件的日志
一篇是说遇到找不到xxx参数的非泛型方法的错误
http://www.lemongtree.com/zh-cn/item,340.html另一篇是解决的方法
http://www.lemongtree.com/zh-cn/item,341.html在上文中
但,现在可以告别那种错误了。解决的方法真的是很简单,把参数名和字段名设为一致就行了。
的确,按照那样的做法,问题是得到了解决,但并非完美的
public void update(string MASTERNAME, string SITEURL, string RSSURL, string email, int CATEGORY_ID,int id)
{
string sql = "update [rss_info] set mastername=@mastername,@siteurl=@siteurl where id=@id"
using (conn = new SqlConnection(_strconn))
{
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.Add("@MASTERNAME", SqlDbType.VarChar, 50).Value = MASTERNAME;
comm.Parameters.Add("@SITEURL", SqlDbType.VarChar, 100).Value = SITEURL;
comm.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
conn.Open();
comm.ExecuteNonQuery();
}
}
这里是上文中的代码
这段代码是往rss_info表中更新一条记录,但在实际的sql语句中,我只更新了2个字段的值,即:mastername/siteurl
那为什么把方法的参数定义为下面这样呢?
public void update(string MASTERNAME, string SITEURL,int id)
如果定义成这样,就会出现
提示错误为:ObjectDataSource1找不到一个包含 MASTERNAME,SITEURL,RSSURL,email,CATEGORY_ID和ID参数的非泛型方法(具体原因我还没有进行验证,我的感觉是ObjectDataSource控件是根据Select语句自动生成Delete/Insert/Update等的,而一般的select语句会列出所有的字段,所以在更新时,同样需要这些参数
MSDN中关于SelectMethod的说明
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.selectmethod(VS.80).aspx在MS提供的大量示例中,一般采用下面的写法
public void UpdateEmployee(int EmployeeId, string LastName, string Firstname, string Title, string Address, string City, String Region, string PostalCode)
{
UpdateEmployee(EmployeeId,Address,City)
}
public void UpdateEmployee(int EmployeeId, string Address, string City )
{
SqlConnection con = new SqlConnection(_connectionString);
string updateString = "UPDATE Employees SET Address=@Address,City=@City WHERE EmployeeID=@EmployeeID";
SqlCommand cmd = new SqlCommand(updateString, con);
cmd.Parameters.AddWithValue("@Address", Address);
cmd.Parameters.AddWithValue("@City", City);
cmd.Parameters.AddWithValue("@EmployeeID", EmployeeId);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
通过重载UpdateEmployee方法,便于数据的扩展和维护。