更新命令神秘地无法在 ASP.NET 工作

本文关键字:ASP NET 工作 命令 更新 | 更新日期: 2023-09-27 18:35:52

我有一个 ASP.NET 应用程序,我将在其中更新一些笔记,但是该命令不会更新数据库笔记。它做了一次,然后决定不再这样做了。在不工作、工作一次然后不再工作之间没有进行任何更改。很奇怪的情况...这是代码。我找不到任何问题。

protected void saveNotes_Click(object sender, EventArgs e)
{
     string theNotes = notes.InnerText;
     string[] vars = { "@notes", "@jobNumber" };
     string[] vals = { theNotes, jobNumber };
     HelperMethods.OleDB_Query("UPDATE [Jobs] SET Notes = @notes WHERE Job_Number = @jobNumber", vars, vals);
     test.InnerText = theNotes;
}

我在 aspx 页中显示注释,以验证它们确实填充并且确实填充了。

以下是数据库访问代码:

public static void OleDB_Query(string cmd, string[] vars = null, string[] vals = null)
{
    OleDbConnection Connection = new OleDbConnection(connectionString);
    OleDbCommand Command = new OleDbCommand(cmd, Connection);
    if (vars != null) {
        for (int k = 0; k < vars.Length; k++)
            Command.Parameters.AddWithValue(vars[k], vals[k]);
        Command.Connection.Open();
        Command.ExecuteNonQuery();
        Command.Connection.Close();
    }
}

我正在尝试显示每次更新尝试的作业编号和注释。

我正在通过 URL 查询字符串获取作业编号。如果作业编号以零开头,则所有零都将被解析掉,显示的是注释文本,后跟解析的作业编号。如果作业编号不以零开头,则仅显示作业编号。没有任何意义。这是一个非常基本的设置,我过去做过很多次。它只是出于某种奇怪的原因决定不再工作。

更新命令神秘地无法在 ASP.NET 工作

我猜这与没有正确处理连接和命令有关。更新静态帮助程序方法以使用 using 语句,它应确保清理连接和命令并准备好下次使用。

public static void OleDB_Query(string cmd, string[] vars = null, string[] vals = null)
{
    using(OleDbConnection Connection = new OleDbConnection(connectionString))
    {
        Command.Connection.Open();
        using(OleDbCommand Command = new OleDbCommand(cmd, Connection))
        {
            if (vars != null) {
                for (int k = 0; k < vars.Length; k++)
                    Command.Parameters.AddWithValue(vars[k], vals[k]);
                Command.ExecuteNonQuery();
        }
        Command.Connection.Close();            
    }
}

这可能与您以字符串形式传递Job_Number有关吗?底层 sql 数据类型是什么?如果是charvarchar,去掉前导零会产生不同的Job_Number

考虑将QueryString值解析为int,然后再将其传递给 SQL,这将去除所有前导零。

两个

问题(一个解决了,一种解决了):

解决:

数据未输入到数据库中,因为每次页面加载时都会重置 jobNumber 变量。我尝试使用 (!IsPostBack),但随后变量没有值。由于它似乎以某种方式失去了它的价值,我只是将其卡在ViewState中,并且能够成功更新数据库。

未解决(但已找到解决方法)问题:

当我传递一个没有前导零的作业编号时,一切都很好,很花花公子。但是,当我传递带有前导零的作业编号时,查询字符串会解析它,并且我留下的作业编号不正确。我在通过 url 传递变量之前和之后测试了变量。它正在 url 中解析。有人知道这件事吗?我想我只会传递一个额外的变量,它代表前导零的数量,这样我就可以把它们重新粘贴上。