我编写了以下函数,该函数在非 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 审核开始消息,但随后的尝试会给出之前创建的错误。