2012-08-03 29 views
0

我有以下脚本插入到SQL Server CE数据库检查SQL Server CE数据库插入功能应用评估后

SqlCeConnection Con = new SqlCeConnection(); 
Con.ConnectionString = (@"Data Source=|DataDirectory|\Database.sdf;Password=Password;"); 
Con.Open(); 
SqlCeCommand Query = new SqlCeCommand("INSERT INTO Users(ID,Name,FName,Address,MCode,MNum,Amount) VALUES(@ID,@Name,@FName,@Address,@Code,@Num,@Amount)", Con) 
Query.Parameters.AddWithValue("@ID", ID + 1); 
Query.Parameters.AddWithValue("@Name", NBox.Text); 
Query.Parameters.AddWithValue("@FName", SOBox.Text); 
Query.Parameters.AddWithValue("@Address", AdBox.Text); 
Query.Parameters.AddWithValue("@Code", Convert.ToInt32(MCode.Text)); 
Query.Parameters.AddWithValue("@Num", Convert.ToInt32(MNum.Text)); 
Query.Parameters.AddWithValue("@Amount", Convert.ToInt32(AmBox.Text)); 

int rowsEffected=Query.ExecuteNonQuery(); 

MessageBox.Show(rowsEffected.ToString()); 

消息框显示rows affected=1插入后,这意味着数据成功插入到数据库中,我使用VC#2010作为文件复制属性将数据库文件移动到Debug/Bin/Release文件夹,当我检查我的项目文件夹中的数据库文件时,它是空的,因为Bin/Release文件在解决方案资源管理器外部可见,所以我无法检查它我想检查我的用于评估的DB文件,即数据是否正确地插入其中

请告诉我该怎么做

谢谢!

+0

你需要一个提交你可以改变你的代码来包含一个交易对象,你可以将你的代码包装在一个Try {} Catch {}中,然后一步一步通过代码..也许你有一个异常被抛出并且不实现它.. – MethodMan 2012-08-03 18:44:05

+0

尝试添加一个try/catch语句,并对其进行调试。我无法理解文件复制属性将db移动到debug/bin/release的意思,并且您看到该文件夹​​为空。既然你没有在一个事务中包装你的操作,你不需要提交,这不是你的问题。 – Jason 2012-08-03 18:52:09

回答

2

这是你的问题:

...文件拷贝属性数据库文件移动到调试/斌/ release文件夹,当我检查我的数据库文件在我的项目文件夹为空

中的数据库文件您的项目文件夹是原始的,未更改的源数据。当您构建应用程序时,Visual Studio将原始项目文件复制(不移动)到您的输出文件夹(Bin/Release或其他)。您的代码将数据插入副本,而不是原始未更改的数据。

要“检查您的数据库文件进行评估”,您必须检查副本,而不是原始,未更改的源文件。您可以使用插入数据的相同应用程序来执行此操作,也可以使用测试应用程序,该测试应用程序使用DataDirectory属性(如果它位于相同的输出文件夹中),也可以在输出目录中打开该文件(您的案例中的Bin/release )。

...斌/释放文件的解决方案资源管理外部可见...

是的,因为它不是你的项目的一部分。它是输出数据,就好像你叫Stream.WriteConsole.Writeline一样。原始的,未更改的源数据是源文件的一部分,就像.cs文件一样。它不会传递给用户,也不会通过运行您的应用程序进行更改。你必须在Bin/Release或其他方面测试拷贝。

+1

所以如何测试这个bin /释放DB文件我的问题是如何检查它请详细告诉我 – user1366440 2012-08-04 11:01:22

+0

解释你的意思是“如何测试”。我不明白。 – 2012-08-04 15:16:18