Sql Server CE插入失败,没有错误

时间:2011-03-23 15:44:06

标签: c# insert sql-server-ce windows-ce .net-3.5

我在将一些数据插入表格时遇到问题。

我用简单的数据库完成了一个程序。 我用

  • c#
  • framework 3.5
  • sql server mobile
  • 程序在GPRS设备上运行。它每天都收到一个zip文件, 提取它并将行插入 一些表格。

一些引用

打开连接:

SqlCeConnection conn = new SqlCeConnection("DataSource = " + file);
conn.Open();                

写一行:

String sql = "INSERT INTO Mercati(id,descr) VALUES(643,'SHAMPOO')"
SqlCeCommand execute = conn.CreateCommand();
execute.CommandText = sql;
int result = execute.ExecuteNonQuery();
execute.Dispose();

数据表就是这样:

CREATE TABLE Mercati(id int PRIMARY KEY,descr nvarchar(40));

这是在try / catch中。并且每次结果都是1(我切断了调试代码)。 我在不同的表格上重复这一点,使用不同的数据。

但有时(1次avery 4/5传输)有一个表没有插入数据,结果= 1,没有例外。

  • 每次我发送i重置 设备和我的程序重新启动。
  • 每次都清空表格 (从Mercati删除)
  • 数据是 每次都是一样的(那些是 工作的基础,但他们可以 有时改变几个月)

我真的没有想法。我不明白这是什么问题。或者我只是如何解决这个问题。 任何解决方案或建议?

非常感谢 丹尼尔

2 个答案:

答案 0 :(得分:2)

我能想到的唯一能使插入数据消失的是事务控制。你有任何COMMIT / ROLLBACK编程吗?

是否有可能将连接字符串更改为其他数据库?

作为一种调试策略,我的第一种方法是在插入后从表中读取数据,以确保数据存在。查看特定行和总行数。我可能会尝试在程序的不同点读取它,看看行何时消失。

答案 1 :(得分:0)

我已经解决了。

INSERT之后我做了一些备份,然后我重置了设备。 但我没有关闭数据库。

奇怪的是我接受了SeaDrive的建议,在我插入之后,该表包含确切的行数。 我做了9次INSERT,我的选择返回9行。重置后我只有1行。

我认为存在某种缓存,在执行期间是透明的,但保持fisical文件不变,除非数据库已关闭。

我希望这会帮助像我这样的其他可怜的开发者关闭他们的DB:D