SQLデータベースにデータを挿入するアプリケーションを作成しました。基本的には、メインフォームから、ユーザーはデータベースに入るデータを求める第2のフォームを開きます。コードは次のようになります。フォームが閉じられた後のSQLのリフレッシュ
private void submitButton_Click(object sender, EventArgs e)
{
//Get form values
try
{
//Open test connection
}
catch (Exception ex)
{
//Handle errors
}
finally
{
//Close test connection
}
//Run the SQL statements
try
{
//Inser SQL data
}
catch (Exception ie)
{
//Handle errors
}
finally
{
//Close the connection
if (conn.State != ConnectionState.Closed)
{
//Close the connection
}
//Close the window
this.Close();
//Tell the main form to reload SQL data (not working)
mainForm firstForm;
firstForm = new mainForm();
firstForm.refreshCall();
}
}
}
ユーザーは(のsubmitButton)OK当たったとき、データが挿入されているので、基本的に、ウィンドウが閉じられ、そしてrefreshCall()
メソッドが呼び出されます。私の方法「refreshCall
は」このように、メインフォーム上に出力されたSQLデータを更新することになっている:
public void refreshCall()
{
SqlConnection conn = new SqlConnection("Data Source=SERVER\\SQL_DB;Initial Catalog=dataTable;Integrated Security=True");
try
{
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT part_num from dbo.Parts", conn);
adapter.Fill(ds);
this.listParts.DataSource = ds.Tables[0];
this.listParts.DisplayMember = "part_num";
conn.Close();
}
catch (SqlException odbcEx)
{
MessageBox.Show("There was an error connecting to the data source.\nError Code: 1001", "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
ただし、このメソッドが呼び出されたときに、データは私が持っている意味し、非リフレッシュされたままアプリケーションを閉じてリロードして変更を確認してください。私のコードでSQLデータが変更されずに残っている何かが間違っていますか?これを行うより良い方法はありますか?私はまた、フォームが初期化されたときにデータをロードするために、refreshCall
から全く同じコードを使用することに注意してください。
ご協力いただきましてありがとうございます。
デバッガをステップ - あなたのSQLの挿入コードは、リフレッシュ呼び出しの前に呼び出されていますか?また、あなたはあなたのSQL挿入コードを投稿できますか?接続/トランザクションが正しく完了している可能性があります。 – tsells