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#