このサイトで初めて質問をしました。Visual C#2008で作成された単純なWindowsフォームがあり、2つのテキストボックスの値をAccess2010データベースの2つのフィールドに追加しています。データベースはTestDatabase.accdbと呼ばれ、テーブルはTestTableです。FirstNameとAddressの2つの変数が、txt.FirstNameとtxt.Addressのtextbox.text値に割り当てられます。OleDBCommandクラスのパラメーターを追加するためのステートメントで、これら2つの変数にも値を追加しているようです。
myCommand.Parameters.Add("@FirstName", OleDbType.VarChar).Value = txtName.Text;
基本的には動作していますが、使用する必要がないように見えるため、ロジックがわかりません。
FirstName = txtName.Text;
また
Address = txtAddress.Text;
ステートメント。TextChangedイベントからコードを削除すると、いくつかの警告が表示されます。
コードは次のとおりです。
namespace Test
{
public partial class Form1 : Form
{
private string FirstName;
private string Address;
private void cmdAdd_Click(object sender, EventArgs e)
{
string strSQL = "INSERT INTO TestTable(Name1, Address) VALUES(@FirstName, '@Address')";
// represents an open connection to a data source. Is a class
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\TEMP\\TestDatabase.accdb");
// represents an SQL statement or stored procedure to execute against a data source
//( takes care of passing queries to the database). Is a class.
OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection);
myCommand.Parameters.Add("@FirstName", OleDbType.VarChar).Value = txtName.Text;
myCommand.Parameters.Add("@Address", OleDbType.VarChar).Value = txtAddress.Text;
try
{
myConnection.Open();
myCommand.ExecuteNonQuery();
}
catch (Exception)
{
MessageBox.Show("Something went wrong");
}
finally
{
myConnection.Close();
}
}
private void txtName_TextChanged(object sender, EventArgs e)
{
//IsNullOrEmpty indicates whether the string is null ot an Empty string
//true if the value parameter is null or an empty string(""); otherwise, false
if (string.IsNullOrEmpty(txtName.Text))
{
//has no value
}
else
{
FirstName = txtName.Text;
}
}
private void txtAddress_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtAddress.Text))
{
//has no value
}
else
{
Address = txtAddress.Text;
}
}
}
}