读书人

为什么datatable使用acceptchange之后

发布时间: 2011-12-27 22:22:54 作者: rapoo

为什么datatable使用acceptchange之后,对应的DataAdapter使用updata不能更新源数据库
如题,至少是插入时无效。
SqlConnection discConn=new SqlConnection( "Data Source=.;User Id=sa;PassWord=123;Initial Catalog=Disc; ");
SqlDataAdapter fileinfoDA=new SqlDataAdapter( "select * from fileinfo ",discConn);
SqlDataAdapter folderinfoDA=new SqlDataAdapter( "select * from folderinfo ",discConn);
SqlDataAdapter discinfoDA=new SqlDataAdapter( "select * from discinfo ",discConn);
SqlDataAdapter usertableDA=new SqlDataAdapter( "select * from usertable ",discConn);
SqlDataAdapter disckindDA=new SqlDataAdapter( "select * from disckind ",discConn);
//SqlCommandBuilder userCB=new SqlCommandBuilder(usertableDA);
DataSet discDS=new DataSet();
try
{
discConn.Open();
Console.WriteLine( "Succeed connected! ");
fileinfoDA.Fill(discDS, "FileInfo ");
discinfoDA.Fill(discDS, "DiscInfo ");
folderinfoDA.Fill(discDS, "FolderInfo ");
usertableDA.Fill(discDS, "UserTable ");
disckindDA.Fill(discDS, "DiscKind ");
discDS.Tables[ "FileInfo "].PrimaryKey=new DataColumn[]{discDS.Tables[ "FileInfo "].Columns[ "DiscNumber "],discDS.Tables[ "FileInfo "].Columns[ "FileFullName "]};
discDS.Tables[ "FolderInfo "].PrimaryKey=new DataColumn[]{discDS.Tables[ "FolderInfo "].Columns[ "DiscNumber "],discDS.Tables[ "FolderInfo "].Columns[ "FolderFullName "]};
discDS.Tables[ "DiscInfo "].PrimaryKey=new DataColumn[]{discDS.Tables[ "DiscInfo "].Columns[ "DiscNumber "]};
discDS.Tables[ "UserTable "].PrimaryKey=new DataColumn[]{discDS.Tables[ "UserTable "].Columns[ "UserName "]};
discDS.Tables[ "DiscKind "].PrimaryKey=new DataColumn[]{discDS.Tables[ "DiscKind "].Columns[ "DiscKind "]};
discDS.Relations.Add(discDS.Tables[ "DiscInfo "].Columns[ "DiscNumber "],discDS.Tables[ "FileInfo "].Columns[ "DiscNumber "]);
discDS.Relations.Add(discDS.Tables[ "DiscInfo "].Columns[ "DiscNumber "],discDS.Tables[ "FolderInfo "].Columns[ "DiscNumber "]);
discDS.Relations.Add(discDS.Tables[ "DiscKind "].Columns[ "DiscKind "],discDS.Tables[ "DiscInfo "].Columns[ "DiscKind "]);
discDS.Relations.Add(discDS.Tables[ "UserTable "].Columns[ "UserName "],discDS.Tables[ "DiscInfo "].Columns[ "Owner "]);
//DataSet tempDS=discDS.Clone();
//tempDS.WriteXmlSchema( "tempDS_Schema.xml ");
//tempDS.WriteXml( "tempDS.xml ");
//discDS.WriteXml( "discDS.xml ");
usertableDA.InsertCommand=new SqlCommand( "insert into UserTable(UserName,UserPW) values(@UserName,@UserPW) ",discConn);
SqlParameter usernameParm=usertableDA.InsertCommand.Parameters.Add( "@UserName ",SqlDbType.Char,20, "UserName ");
SqlParameter userpwParm=usertableDA.InsertCommand.Parameters.Add( "@UserPW ",SqlDbType.Char,10, "UserPW ");
DataRow userRow=discDS.Tables[ "UserTable "].NewRow();
userRow[ "UserName "]= "hello ";
userRow[ "UserPW "]= "123 ";
discDS.Tables[ "UserTable "].Rows.Add(userRow);


userRow=discDS.Tables[ "UserTable "].NewRow();
userRow[ "UserName "]= "cyc ";
userRow[ "UserPW "]= "321 ";
discDS.Tables[ "UserTable "].Rows.Add(userRow);
//discDS.Tables[ "UserTable "].AcceptChanges();
foreach(DataRow userDR in discDS.Tables[ "UserTable "].Rows)
{
Console.WriteLine(userDR[ "UserName "]);
Console.WriteLine(userDR[ "UserPW "]);
}
usertableDA.Update(discDS, "UserTable ");
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Console.Read();
}
discConn.Close();

[解决办法]
用usertableDA.Update(discDS)试试
[解决办法]
应该先Update,再AcceptChanges

读书人网 >C#

热点推荐