当前位置:编程学习 > C#/ASP.NET >>

c#多表查詢結果數據集更新問題

public static  void UpdateDataset(DataSet dataSet, string tableName,string constring)
{
SqlConnection conn = new SqlConnection(constring);
conn.Open();
string ls_sql = "select top 0 * from " + tableName;
SqlDataAdapter da = new SqlDataAdapter(ls_sql,conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds,tableName);
ds = dataSet.Copy();
try
{
da.Update(ds,tableName);
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
conn.Close();
da.Dispose();
cb.Dispose();
ds.Dispose();
}
}
這個是對單表結果集更新,我怎樣實現多表的結果集更新呢
如ds的sql語句為select a.e_no,a.e_name,a.e_dept,b.b_deptname //是顯示b表的部門名稱
from a,b where a.e_dept =b.b_dept 
像這個樣的數據集用上面的辦法就行不能,有沒有好的辦法 --------------------编程问答-------------------- 参考这里,
ADO.NET中的多数据表操作浅析
http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx --------------------编程问答-------------------- 另外一个通过向导生成的代码也可以参考一下,
http://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx --------------------编程问答-------------------- 有没有更简单的 --------------------编程问答-------------------- 你先用SQL语句建立一个新表
表内的字段类型,长度,非空约束~按你选定的多表的字段来做
然后用单表的方法去更新~~~
--------------------编程问答-------------------- 只要后面表名不一样就可以更新啊..
多个适配器..
一个数据集... --------------------编程问答-------------------- 給個例來研究下,可以不,樓上幾位 --------------------编程问答-------------------- 顶起来 --------------------编程问答-------------------- public static void UpdateDataset(DataSet dataSet, string[] tableNames)
        {

            OleDbConnection conn = new OleDbConnection();
            conn = conntodata.conndata();
            OleDbTransaction trans = conn.BeginTransaction();
            try
            {
                foreach (string tableName in tableNames)
                {
                    UpdateDataset(trans,conn,dataSet,tableName);
                }
                trans.Commit();
            }
            catch (System.Data.OleDb.OleDbException e)
            {
                trans.Rollback();
                throw new Exception(e.Message);
            }
            finally
            {
                conn.Close();
            }
        }
        public static void UpdateDataset(OleDbTransaction trans, OleDbConnection conn, DataSet dataSet, string tableName)
        {
            string ls_sql = "select top 0 * from " + tableName;

            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            OleDbDataAdapter da = new OleDbDataAdapter(ls_sql, conn);
            OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
            da.SelectCommand.Transaction = trans;
            
            try
            {
                da.Update(dataSet, tableName);
                //ds.AcceptChanges();
            }
            catch (System.Data.OleDb.OleDbException e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                da.Dispose();
                cb.Dispose();
                dataSet.Dispose();
            }
        }
怎麼更新不了啊, --------------------编程问答-------------------- 我觉得最好还是单个表更新好,因为一些关联表不好判断更新的先后顺序。 --------------------编程问答-------------------- 不能沉下去,我想很多新手都想知道,能源易做图作參考最好,最好不要用select top 0 from 表,哪樣感覺不好 --------------------编程问答-------------------- 那就要在程序中去控制了
--------------------编程问答-------------------- 顶起来
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,