在使用 SQL Server CE 插入功能时遇到问题

本文关键字:功能 遇到 问题 插入 CE SQL Server | 更新日期: 2023-09-27 17:56:26

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

在使用 SQL Server CE 插入功能时遇到问题

你能给我们看看你的连接字符串吗?

最有可能的是,如果您在 Visual Studio 中对此进行测试,则会复制数据库文件(从初始目录复制到运行应用程序的输出目录),并且您的INSERT可能会正常工作 - 但是当您检查该事实时,您只是查看了错误的文件。