插入本地数据库C#

时间:2014-06-08 09:55:19

标签: c# asp.net sql-server-ce

我无法在C#中插入并选择本地数据库数据。

我已阅读这些文章

所有代码示例都相同,这是我的样本。

SqlCeConnection conn = new SqlCeConnection(@"Data Source=|DataDirectory|\PacjenciDB.sdf");
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();

cmd.CommandText="INSERT INTO pacjenci (nazwiskoimie,adres,skierowany,opis) values (@nazwiskoimie,@adres,@skierowany,@opis)";
cmd.Parameters.AddWithValue("@nazwiskoimie", txtnazwiskoimie.Text);
cmd.Parameters.AddWithValue("@adres", txtadres.Text);
cmd.Parameters.AddWithValue("@skierowany", txtskierowany.Text);
cmd.Parameters.AddWithValue("@opis", txtopis.Text);

cmd.ExecuteNonQuery();

conn.Close();

有人能告诉我我做错了吗?

我已尝试过大量有关插入数据的示例,但它无法正常工作。

我可以管理.MDF,但.SDF似乎很成问题。

希望你帮助我

4 个答案:

答案 0 :(得分:1)

好的,我会在这里猜一猜。 PacjenciDB.sdf是否包含在Visual Studio项目中?您是否将“复制到输出文件夹”属性设置为“始终”或类似的东西?似乎每次进行构建时都可能会覆盖输出文件夹数据库文件。尝试将数据库放在不在VS项目中的文件夹中。

顺便说一下,你的代码还行。

答案 1 :(得分:1)

在bin / debug文件夹中查找包含数据的数据库副本。

解决方法是不使用| DataDirectory |,而是使用完整路径。

答案 2 :(得分:0)

上面的代码是正确的,很可能问题出在其他地方,你从那里调用代码。如果数据库连接出现问题或数据错误 - 您应该获得异常。由于没有发生错误而且没有添加新记录 - 代码根本没有执行。

P.S。

.sdf是一个Sql Server Compact本地数据库,因此使用System.Data.SqlServerCe是正确的 http://msdn.microsoft.com/en-us/library/system.data.sqlserverce(v=vs.100).aspx

答案 3 :(得分:-1)

在设置数据库文件的路径时尝试使用双反斜杠:

string dbPath + "Data Source=C:\\DataDirectory\\PacjenciDB.sdf";
SqlCeConnection conn = new SqlCeConnection(dbPath);
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();

cmd.CommandText="INSERT INTO pacjenci (nazwiskoimie,adres,skierowany,opis) values (@nazwiskoimie,@adres,@skierowany,@opis)";
cmd.Parameters.AddWithValue("@nazwiskoimie", txtnazwiskoimie.Text);
cmd.Parameters.AddWithValue("@adres", txtadres.Text);
cmd.Parameters.AddWithValue("@skierowany", txtskierowany.Text);
cmd.Parameters.AddWithValue("@opis", txtopis.Text);

cmd.ExecuteNonQuery();

conn.Close();