質問があります。問題Windowsアプリケーションからデータベースを更新する際に
Windowsフォーム(Visual Studioプロジェクト)を使用してSQLデータベースのデータを更新する際に問題が発生しています。ここで
は、私が何をすべきかです:
- 私はテキストボックスにユーザー情報を取得します。
- 私はそれらのいくつかを編集します。
- 私はこのフォームにもう1回戻る。情報が更新されます。
- もう一度終了してログインすると、古いデータが表示されます。
データベースを一時的に変更しているようです。プロパティや何かを設定する必要はありますか?
私はwinアプリケーションを使用しています。私は前のフォームに2を必要とするバックリンクを保持しています。 は、私は2つのボタンshowUserInfoとSaveUserInfo..okを持って
を何が起こるかを参照してください?
showUserInfoをクリックすると、dbからデータが取得され、フォームに表示されます。
次に、ユーザーの年齢や住所を編集し、saveUserInfo button.itをクリックすると私の成功が返されます。
私はShowUserInfoをもう一度クリックして、私はちょうど私がpreviosフォームに行くと、このフォームに行くと私はちょうどupdated.even情報を取得、私は更新情報をすることができます。限り、アプリケーションの私は同じ更新情報を更新することができます。
これで、アプリケーションを.close()メソッドで終了しました。もう一度アプリケーションを実行すると、古い情報が表示されます。つまり、dbが更新されていません。
私はuserInfoテーブルを開くと、更新されません。
私の保存ボタンと表示ボタンは、データアクセスレイヤーの関数を呼び出して、ストアドプロシージャを呼び出します。
ALTER PROCEDURE dbo.sp_UpdateUserInfo
@userName nvarchar(30),
@fName nvarchar(30),
@lName nvarchar(30),
@gender nvarchar(10),
@email nvarchar(30),
@age int,
@address nvarchar(30)
AS
update [T_UserInfo] set [FirstName] = @fName, [LastName] = @lName, [Gender] = @gender, [email] = @email, [Age] = @age, [Address] = @address where [UserName] = @userName
RETURN
助けてください...
//This the code for my form's save button as u can c....
private void btnSave_Click(object sender, EventArgs e)
{
string fName = txtFirstName.Text;
string lName = txtLastName.Text;
string gender;
if (rdbtnMale.Checked == true)
{
gender = "Male";
}
else
{
gender = "Female";
}
string email = txtEmail.Text;
int age = Convert.ToInt16(txtAge.Text);
string address = txtAddress.Text;
int flag;
// here i call the DAL function.....
flag = SHSProvider.UpdateUserInfo(userName, fName, lName, gender, email, age, address);
if (flag == 1)
{
MessageBox.Show("Your Account Has been changed successfully");
}
else
{
MessageBox.Show("Sorry");
}
}
//........................
// this is the update function in my provider...
public static int UpdateUserInfo(string userName, string fName, string lName, string gender, string email, int age, string address)
{
string strconn = ConfigurationManager.ConnectionStrings["SHSDatabaseConnectionString"].ToString();
SqlParameter[] sqlparams = new SqlParameter[7];
sqlparams[0] = new SqlParameter("@userName", userName);
sqlparams[1] = new SqlParameter("@firstName", fName);
sqlparams[2] = new SqlParameter("@lastName", lName);
sqlparams[3] = new SqlParameter("@gender", gender);
sqlparams[4] = new SqlParameter("@email", email);
sqlparams[5] = new SqlParameter("@age", age);
sqlparams[6] = new SqlParameter("@address", address);
int flag = SqlHelper.ExecuteNonQuery(strconn, "sp_UpdateUserInfo", sqlparams);
return flag;
}
//そして最後に、これは私の保存されている手順:私はこれは私が何をすべきかである任意ののDataReaders
を使用していません!
ありがとうございました
アップデート後に手動でクエリを実行して、アップデートが確実に行われていますか? – Seibar
データアクセスを達成する方法の詳細が必要 – RobS