gpt4 book ai didi

c# - 如何在 SQLDataAdapter 中使用更新语句

转载 作者:行者123 更新时间:2023-12-05 01:21:13 25 4
gpt4 key购买 nike

我正在尝试在构建 sqldataadapter 后运行更新语句。我的表中有一个名为 INIT_PHASE 的列,如果 INIT_PHASE 为空或没有数据,那么我想将其设置为 1。我已经尝试过,但我似乎无法正确更新语句。请。帮助。这是我的代码:

 string ID = ddlPractice.SelectedValue;
string TYPE = DDL_TYPE.SelectedValue;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(@"select SET_SK, UNIT_NM, TYPE, INIT_PHASE FROM myTable WHERE UNIT_NM =@ID AND TYPE = @TYPE", con);
DataTable dtSETS = new DataTable();
da.SelectCommand.Parameters.AddWithValue("@ID", (ID));
da.SelectCommand.Parameters.AddWithValue("@TYPE", (TYPE));
da.Fill(dtSETS);

if (dtSETS.Rows.Count > 0)
{
DataRow dtSETS_row = dtSETS.Rows[0];

long SET_SK = dtSETS_row.Field<long>("SET_SK");

if (dtSETS_row.Field<string>("INIT_PHASE") == null)
{

//run update command here

update myTable set INIT_PHASE = 1;

}
}

最佳答案

这里的一种方法是使用 SqlCommandBuilder 来构建 UPDATE 语句:

string ID = ddlPractice.SelectedValue;
string TYPE = DDL_TYPE.SelectedValue;
SqlConnection con = new SqlConnection(
ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(
@"select SET_SK, UNIT_NM, TYPE, INIT_PHASE FROM myTable WHERE UNIT_NM =@ID AND TYPE = @TYPE",
con);

DataTable dtSETS = new DataTable();
da.SelectCommand.Parameters.AddWithValue("@ID", (ID));
da.SelectCommand.Parameters.AddWithValue("@TYPE", (TYPE));
da.Fill(dtSETS);

SqlCommandBuilder builder = new SqlCommandBuilder(da);
da.UpdateCommand = builder.GetUpdateCommand();

if (dtSETS.Rows.Count > 0)
{
DataRow dtSETS_row = dtSETS.Rows[0];

long SET_SK = dtSETS_row.Field<long>("SET_SK");

if (dtSETS_row.Field<string>("INIT_PHASE") == null)
{
dtSETS_row["INIT_PHASE"] = 1;
}
}

da.Update(dtSETS);

请注意以下代码行。我们在这里构建更新命令:

SqlCommandBuilder builder = new SqlCommandBuilder(da);
da.UpdateCommand = builder.GetUpdateCommand();

这里我们实际上是在修改 DataRow,以便它的 RowState 更改为 Modified:

dtSETS_row["INIT_PHASE"] = 1;

最后,我们在这里使用 SqlDataAdapter 上的 Update 方法向数据库发送更新:

da.Update(dtSETS);

这将要做的只是为 RowStateModified 的行发送更新。

注意:每个 ADO.NET 对象都应包含在 using 中。重构您的代码以匹配此类模板:

using (SqlConnection con = new SqlConnection(...))
{
using (SqlDataAdapter da = new SqlDataAdapter(...))
{

}
}

关于c# - 如何在 SQLDataAdapter 中使用更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com