开发者

Why can't I insert data into local database (SQL Compact Edition) with C#?

I am doing a project on Visual Studio. I am using a local database (empty sql server compact edition). I chose Dataset and created my table (Images). It has a primary autoincrement id column, and an nvarchar ImagePath column. I want to insert data in it and here is my code.

SqlCeConnection con = new SqlCeConnection();
con.ConnectionString = yeniApplicationDatabase.Properties.Settings.Default.DatabaseEdaConnectionString;
con.Open();
using (SqlCeCommand com = new SqlCeCommand("INSERT INTO Images (ImagePath) VALUES ('book')", con))
{
  com.ExecuteNonQuery();
}

I don't know why but this one doesn't give any error, the syntax(SQL) is fine. However, when I check the table data, it is still null. Here is the thing;

In the same run,

I execute that code, then I execute another one which is select * from images...

It shows 'book'. But still, the table data is empty, and when I rerun it without inserting, only selecting from Images, it is gone again. I really don't understand what is going on. Why c开发者_StackOverflow中文版an't I put anything in my database?

I also added con.Close() but it still doesn't work.


SqlCeConnection con = new SqlCeConnection();
con.ConnectionString =  yeniApplicationDatabase.Properties.Settings.Default.DatabaseEdaConnectionString;
con.Open();
SqlCeCommand com = new SqlCeCommand("INSERT INTO Images (ImagePath) VALUES ('book')", con);

com.ExecuteNonQuery();


com.Dispose();
con.Close();

Closing the connection should complete the insert.

EDIT: update on the solution

Which database file(.sdf) are you viewing to check whether the data has been inserted. check the content of the test table in the .sdf in the bin\Debug folder. I believe that your data is inserted properly in the database file which exist in bin\Debug folder.

Just found a similar question on stack overflow: Why can't I insert a record into my SQL Compact 3.5 database? and I firmly believe that your problem is exactly the same. you are checking the wrong database file.


I do not use Eclipse, but something you must watch out for in Visual Studio when debugging local databases is the Copy file property for the database file in Solution Explorer.

By default this property is "Copy", which means a copy of the database is put in the bin\debug folder of your project and the connection string is to the copy. If you change the copy, your original file is not changed and the changes are discarded when your debug session exits.

See if your IDE copies the database and inspect the connection string. Also how are you "checking the data table"? Are you using the same connection string? Are you doing this after the debug session ends?


SqlCeConnection conn = new SqlCeConnection(@"Data Source = c:\FullPath") 

How to get full path: in solution explorer Right click on .Sdf then get fullPath.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜