gpt4 book ai didi

c# - Asp.net c# SQL Server 更新查询不适用于所有列

转载 作者:行者123 更新时间:2023-11-30 23:29:48 25 4
gpt4 key购买 nike

我有一个表单可以编辑数据库中的信息。首先,我使用 URL 参数查询数据库以获取记录并将它们显示在文本框中,以便我可以更新它们。代码的那部分工作问题是当我在更改文本框上的内容后按提交更新数据时。只有 LastMod 列得到更新。我认为 page_load 会触发两次并在按钮点击事件触发之前覆盖文本框上的内容。

这是代码。

public partial class Edit : System.Web.UI.Page
{
int aID;
SqlConnection conn = new SqlConnection(@connectionstring);

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
conn.Open();
aID = Convert.ToInt16(Request.QueryString["ID"]);
string sql = "select * from Contacts where ID = '" + aID + "' ";

SqlDataAdapter adap = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();

adap.Fill(ds);

txtFName.Text = ds.Tables[0].Rows[0]["Fname"].ToString();
txtLName.Text = ds.Tables[0].Rows[0]["Lname"].ToString();
txtEmail.Text = ds.Tables[0].Rows[0]["EmailAdd"].ToString();
lblLastMod.Text = ds.Tables[0].Rows[0]["LastMod"].ToString();
}
}

protected void Button1_Click(object sender, EventArgs e)
{
DateTime date = DateTime.Now;
SqlCommand sqlComm = new SqlCommand();
sqlComm = conn.CreateCommand();

sqlComm.CommandText = @"UPDATE Contacts SET Fname=@FName, Lname = @LName, EmailAdd = @Eadd,LastMod = @LMod WHERE ID=@ID";
sqlComm.Parameters.Add("@FName", SqlDbType.NChar);
sqlComm.Parameters["@FName"].Value = txtFName.Text.Trim();
sqlComm.Parameters.Add("@LName", SqlDbType.NChar);
sqlComm.Parameters["@LName"].Value = txtLName.Text.Trim();
sqlComm.Parameters.Add("@Eadd", SqlDbType.NChar);
sqlComm.Parameters["@Eadd"].Value = txtEmail.Text.Trim();
sqlComm.Parameters.Add("@LMod", SqlDbType.DateTime);
sqlComm.Parameters["@LMod"].Value = date;
sqlComm.Parameters.Add("@ID", SqlDbType.Int);
sqlComm.Parameters["@ID"].Value = aID;

conn.Open();
sqlComm.ExecuteNonQuery();
conn.Close();
}
}

我尝试在我的 Page_Load 方法中添加 !IsPostback,但即使是 LastMod 记录也没有任何更新。

感谢我得到的任何帮助。

最佳答案

您在页面顶部声明一个变量 aID,并在页面加载时在其中设置一个值。然后您也可以在点击中使用它,但您永远不会重新设置它。因此,对于回发,它不会有值(value)。将此移动到您的“if not ispostback”上方的页面加载

protected void Page_Load(object sender, EventArgs e)
{
aID = Convert.ToInt16(Request.QueryString["ID"]);
if (!IsPostBack)
{
conn.Open();

string sql = "select * from Contacts where ID = '" + aID + "' ";

关于c# - Asp.net c# SQL Server 更新查询不适用于所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35233534/

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