こんにちは、今日、私のアプリケーションに問題があり、大きな問題が発生しました:
SQL Server 2005 Express Edition で vs2008 prof を使用しています。
問題は、あるテーブルの行を更新しようとすると、 update.executeNonQuery() が値 1 を返すことです。これは、1 行が更新されたが、行が更新されていないことを意味します。
テーブルデータを開いてフィールドを変更して値を手動で変更しようとすると、機能して保存されますが、それ以外の場合は何もしません。
また、同じソフトウェア キットを使用して別のマシンで実行しようとしましたが、IIS7 でも同じことを実行しようとしましたが、問題は解決しません。
誰かが私が何をすべきかについていくつかの提案をすることができますか、または誰かがこの問題に遭遇した場合、私は本当に助けが必要であり、私はそれを高く評価します!
後で編集: - ソースコードを追加
int user_id = (int)Session["UserId"];
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
con.Open();
SqlCommand update = new SqlCommand("update profil_candidat set nume = @pnume, prenume = @pprenume, data_nasterii = @pdata_nasterii, id_oras = @pid_oras , adresa = @padresa where id_utilizator=@pid_utilizator",con);
update.Parameters.Add("pnume", SqlDbType.VarChar);
update.Parameters.Add("pprenume", SqlDbType.VarChar);
update.Parameters.Add("pdata_nasterii", SqlDbType.VarChar);
update.Parameters.Add("pid_oras", SqlDbType.VarChar);
update.Parameters.Add("padresa", SqlDbType.VarChar);
update.Parameters.Add("pid_utilizator",SqlDbType.Int);
int an = Convert.ToInt32(AnDropDownList.SelectedItem.Value);
int luna = Convert.ToInt32(LunaDropDownList.SelectedItem.Value);
int zi = Convert.ToInt32(ZiDropDownList.SelectedItem.Value);
DateTime data = new DateTime(an, luna, zi);
update.Parameters["pnume"].Value = TextBoxNume.Text;
update.Parameters["pprenume"].Value = TextBoxPrenume.Text;
update.Parameters["pdata_nasterii"].Value = data;
update.Parameters["pid_oras"].Value = DropDownList1.SelectedItem.Value;
update.Parameters["padresa"].Value = TextBoxAdresa.Text;
update.Parameters["pid_utilizator"].Value = int.Parse(Session["UserId"].ToString());
update.ExecuteNonQuery();
con.Close();
後で編集
解決された問題は、実際には次のものに関連していたようです:
SqlCommand.Parameters ASP.NET を使用した C# Update Table
誰かが if(Page.IsPostBack) のページ読み込みにフォームの初期化を入れるのを忘れていましたが、dbase には何の問題もありませんでしたが、ステートメントで送信されたパラメーターは常にイベントでプリロードされていました...それでも迅速な回答に感謝します!