关于ObjectDataSource出现找不到xx参数的非泛型方法的另一种说法

in Develop

以前发过二篇关于ObjectDataSource控件的日志
一篇是说遇到找不到xxx参数的非泛型方法的错误
http://yibin.us/zh-cn/item,340.html

另一篇是解决的方法
http://yibin.us/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方法,便于数据的扩展和维护。

0 Comments

Leave a Reply

Using Gravatars in the comments - get your own and be recognized!

XHTML: These are some of the tags you can use: <a href=""> <b> <blockquote> <code> <em> <i> <strike> <strong>