0

いくつかのメモを更新する 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クエリ文字列を介してジョブ番号を取得しています。ジョブ番号がゼロで始まる場合、ゼロはすべて解析され、表示されるのはノート テキストと解析されたジョブ番号です。ジョブ番号がゼロで始まらない場合は、ジョブ番号のみが表示されます。意味がありません。これは、私が過去に何度も行ってきた非常に基本的なセットアップです。なんらかの奇妙な理由で、もう働かないことに決めているだけです。

4

3 に答える 3

0

これは、あなたがあなたJob_Numberを文字列として渡しているという事実と関係がありますか? 基になる sql データ型は何ですか? charまたはの場合varchar、先頭のゼロを取り除くと、別の が生成されますJob_Number

すべての先行ゼロを削除する SQL に値を渡す前に、QueryString値を解析することを検討してください。int

于 2013-10-17T16:57:57.763 に答える
0

接続とコマンドを適切に破棄しないことに関連していると思います。ステートメントを使用するように静的ヘルパー メソッドを更新する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();            
    }
}
于 2013-10-17T16:41:08.917 に答える