Java 如何更新数据集中的现有记录
我似乎无法使用强类型数据集更新表中的现有记录。我可以添加一个新记录,但如果我对现有记录进行更改,它将不起作用 这是我的密码:Java 如何更新数据集中的现有记录,java,sql,Java,Sql,我似乎无法使用强类型数据集更新表中的现有记录。我可以添加一个新记录,但如果我对现有记录进行更改,它将不起作用 这是我的密码: private void AddEmplMaster() { dsEmplMast dsEmpMst = new dsEmplMast(); SqlConnection cn = new SqlConnection(); cn.ConnectionString = System.Configuration.Conf
private void AddEmplMaster()
{
dsEmplMast dsEmpMst = new dsEmplMast();
SqlConnection cn = new SqlConnection();
cn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["cn.ConnectionString"];
SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM UPR00100", cn);
SqlCommandBuilder cb1 = new SqlCommandBuilder(da1);
da1.Fill(dsEmpMst.UPR00100);
DataTable dtMst = UpdateEmpMst(dsEmpMst);
da1.Update(dsEmpMst.UPR00100);
}
从上面调用此过程以将更改的字段分配给记录:
private DataTable UpdateEmpMst(dsEmplMast dsEmpMst)
{
DataTable dtMst = new DataTable();
try
{
dsEmplMast.UPR00100Row empRow = dsEmpMst.UPR00100.NewUPR00100Row();
empRow.EMPLOYID = txtEmplId.Text.Trim();
empRow.LASTNAME = txtLastName.Text.Trim();
empRow.FRSTNAME = txtFirstName.Text.Trim();
empRow.MIDLNAME = txtMidName.Text.Trim();
empRow.ADRSCODE = "PRIMARY";
empRow.SOCSCNUM = txtSSN.Text.Trim();
empRow.DEPRTMNT = ddlDept.SelectedValue.Trim();
empRow.JOBTITLE = txtJobTitle.Text.Trim();
empRow.STRTDATE = DateTime.Today;
empRow.EMPLOYMENTTYPE = "1";
dsEmpMst.UPR00100.Rows.Add(empRow);
}
catch { }
return dtMst;
}
多谢各位
更新:
好吧,我知道了。在我的UpdateEmpMst()
过程中,我必须先检查记录是否存在,然后再检索它。如果没有,则创建要添加的新记录。我补充说:
try
{
dsEmplMast.UPR00100Row empRow;
empRow = dsEmpMst.UPR00100.FindByEMPLOYID(txtEmplId.Text.Trim());
if (empRow == null)
{
empRow = dsEmpMst.UPR00100.NewUPR00100Row();
dsEmpMst.UPR00100.Rows.Add(empRow);
}
然后,我将数据分配给我创建并更新的新的
empRow
行。为了编辑数据集中的现有记录,您需要访问特定行中的特定数据列。类型化和非类型化数据集中的数据都可以通过以下方式访问:
使用表、行和列集合的索引。
通过将表名和列名作为字符串传递给各自的集合。
尽管类型化数据集可以使用与非类型化数据集相同的语法,但使用类型化数据集还有其他优点。有关更多信息,请参阅下面的“使用类型化数据集更新现有记录”部分。
更新类型化或非类型化数据集中的现有记录
将值指定给DataRow对象中的特定列。
非类型化数据集的表名和列名在设计时不可用,必须通过各自的索引进行访问。有人有什么想法吗?请分享。为什么没有人回复我的帖子?我有53个观点,但没有评论/回复。你回答了自己的问题,对吗?你不妨把它贴出来作为答案。请注意,您声明dtMst并将其返回,但从未对其做任何操作。+1对于亚伯拉罕,看起来您回答了自己的问题。您可以添加答案并将其关闭。@hmakled:将您的解决方案复制为答案,然后接受它。这将阻止这个问题作为未回答的问题出现。谢谢