我在将一些数据插入表格时遇到问题。
我用简单的数据库完成了一个程序。 我用
一些引用
打开连接:
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,没有例外。
我真的没有想法。我不明白这是什么问题。或者我只是如何解决这个问题。 任何解决方案或建议?
非常感谢 丹尼尔
答案 0 :(得分:2)
我能想到的唯一能使插入数据消失的是事务控制。你有任何COMMIT / ROLLBACK编程吗?
是否有可能将连接字符串更改为其他数据库?
作为一种调试策略,我的第一种方法是在插入后从表中读取数据,以确保数据存在。查看特定行和总行数。我可能会尝试在程序的不同点读取它,看看行何时消失。
答案 1 :(得分:0)
我已经解决了。
INSERT之后我做了一些备份,然后我重置了设备。 但我没有关闭数据库。
奇怪的是我接受了SeaDrive的建议,在我插入之后,该表包含确切的行数。 我做了9次INSERT,我的选择返回9行。重置后我只有1行。
我认为存在某种缓存,在执行期间是透明的,但保持fisical文件不变,除非数据库已关闭。
我希望这会帮助像我这样的其他可怜的开发者关闭他们的DB:D