none
datagridview插入和修改的问题 RRS feed

  • 问题

  • 在使用datagridview的过程中,可以自己写sql语句,然后将修改的内容保存,也可以直接在datagridview中新增信息,但是datagridview本身无法判断是新增还是修改,那我们如何来判断呢?

    我看到很多人用下面的代码,插入、修改都可以

    public bool  UpdateDataGridView(string sql, SqlConnection myConn, DataGridView dg)
            {
                bool result = true;

                try
                {                
                    DataTable dt = new DataTable();

                    SqlDataAdapter ada = new SqlDataAdapter(sql, myConn);
                    SqlCommandBuilder cb = new SqlCommandBuilder(ada);

                    dt = ((DataTable)dg.DataSource).Copy();               

                    ada.Update(dt);
                    dg.Update();
                    dt.AcceptChanges();
                }
                catch
                {
                    result = false;
                }
                return result;
            }

    不知道这样写可以吗?

    哪位能帮忙解答下?谢谢

    • 已编辑 heartg 2011年9月22日 2:42
    2011年9月21日 15:05

答案

  • 你好:)

    楼上的代码是可以的。因为DataTable无论你做增删改查,都是在内存中进行的。和数据库毫无关系。

    同时,每次做了操作之后,DataTable中的某个行(DataRow)会自动维护状态(比如添加到DataTable中的状态是Added,删除的是Deleted等)。然后你Update,该方法内部使用类似foreach的循环遍历整个DataRow,获取状态,动态根据状态判断调用Insert,Delete还是Update语句。


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 heartg 2011年9月24日 8:37
    2011年9月23日 7:09
    版主