ユーザー名と DateTime オブジェクトを MS-Access データベースに保存しようとしていますが、「INSERT INTO ステートメントの構文エラー」が発生します。プログラムをデバッグすると、日付が正しく渡されていることがわかります。また、DateTime 情報を完全に削除し、ユーザー名だけで挿入コマンドを使用して正しく保存したため、DateTime 自体と関係がありますが、何がわかりません。関連するコードは次のとおりです。
//event handler for Begin Program button
private void btnBeginProgram_Click(object sender, EventArgs e)
{
//assign DateTime object to current computer date/time
busObject.DtDate = DateTime.Now;
//assign input to busObject.UserName property
busObject.UserName = txtEnterName.Text;
//call method to save input data
busObject.SaveData();
this.Close();
}
//properties for variables and objects
public string UserName
{
get { return userName; }
set { userName = value; }
}
public DateTime DtDate
{
get { return dtDate; }
set { dtDate = value; }
}
//method to call SaveData method in ProgramLoginDAL class
public void SaveData()
{
ProgramLoginDAL.SaveData(this);
}
//method to save user input to database
public static void SaveData(ProgramLoginBOL busObject)
{
try
{
OleDbCommand cmd = aConnection.CreateCommand();
String sSQLCommand = "INSERT INTO ProgramLogin (UserName, DateTime) VALUES (?,?)";
cmd.Parameters.AddWithValue("?", busObject.UserName);
cmd.Parameters.AddWithValue("?", busObject.DtDate);
if (aConnection.State == ConnectionState.Closed)
{
aConnection.Open();
}
cmd.CommandText = sSQLCommand;
// Execute the SQL command
cmd.ExecuteNonQuery();
aConnection.Close();
MessageBox.Show("Data Saved");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
MessageBox.Show("Error! Data was not saved.");
}
}