以下の関数を作成しました。この関数は、int以外の入力で正しくエラーになり、int入力で監査が正しく開始されたことを返します。残念ながら、テーブルを確認すると、データが実際に挿入されていないことがわかります。
私が間違っていることについて何か提案はありますか?
public string SqlLocation = "Data Source="+ new FileInfo(Path.GetDirectoryName(Application.ExecutablePath) + "\\DRAssistant.sdf");
public string StartAudit(string sqlLocation, string dps)
{
int dpsInteger;
if (!int.TryParse(dps, out dpsInteger))
return "DPS is not a number!";
try
{
var myConnection = new SqlCeConnection(sqlLocation);
myConnection.Open();
var myCommand = myConnection.CreateCommand();
myCommand.CommandText = string.Format("SELECT dps FROM DispatchReviews
WHERE dps = {0}", dpsInteger);
SqlCeDataReader reader = myCommand.ExecuteReader();
if (reader.Read())
{ return "DPS review has already started!"; }
myCommand.CommandText = "INSERT INTO DispatchReviews (dps, starttime,
reviewer) VALUES (@dps, @starttime, @reviewer)";
myCommand.Parameters.AddWithValue("@dps", dpsInteger);
myCommand.Parameters.AddWithValue("@starttime", DateTime.Now);
myCommand.Parameters.AddWithValue("@reviewer", Environment.UserName);
myCommand.Prepare();
myCommand.ExecuteNonQuery();
myCommand.Dispose();
myConnection.Close();
return "Dispatch Review Started!";
}
catch(Exception ex)
{ return "Unable to save DPS!" + ex.Message; }
}
編集:これはばかげた問題であり、SqlLocationを見ている人なら誰でも理解できるでしょう。アプリケーションをビルドするたびに、.sdfの新しいコピーがアプリケーションディレクトリにコピーされ、前の問題が上書きされていました。 。また、更新を確認していたデータベースは、実行ディレクトリにあるデータベースではなく、データベースにコピーされていたデータベースでした。そのため、常に空でした。これに気付いたのは、最初に同じDPSを複数回追加しようとすると、DPSレビュー開始メッセージが表示されましたが、その後の試行では、以前に作成されたエラーが表示されるためです。