遇到SQL Server CE插入功能问题

时间:2013-01-27 18:18:01

标签: c# sql-server-ce

我编写了下面的函数,使用非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审核启动消息,但后续尝试会给出之前已创建的错误。

1 个答案:

答案 0 :(得分:1)

你能告诉我们你的连接字符串吗?

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