首页 联系我 返回顶部
以前发过二篇关于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方法,便于数据的扩展和维护。

相关文章

Write a comment:



(将显示你的Gravatar图标)  



[b][/b] - [i][/i] - [u][/u]- [quote][/quote]

:-/ ^_^ :d :o :kiss: :) :p :se: [yeah] :( :love: :han: :up: :cry: :zzz: o_o

暂时停止交换链接.

评论提交有问题?