插入本地 Sql Server CE 不插入
Posted
技术标签:
【中文标题】插入本地 Sql Server CE 不插入【英文标题】:Insert into a local Sql Server CE don't insert 【发布时间】:2013-09-09 11:25:37 【问题描述】:您好,我有一个名为 Database1.sdf 的本地数据库。 我正在使用以下代码访问它以将一些数据插入到表中:
public string DoLocalDbCmd(string Command)
int NumeroAffetto;
string ConnString = @"Data Source=|DataDirectory|\Database1.sdf";
SqlCeConnection Conn = new SqlCeConnection(ConnString);
SqlCeCommand Comando = new SqlCeCommand(Command, Conn);
Comando.CommandType = System.Data.CommandType.Text;
try
Comando.Connection.Open();
NumeroAffetto = Comando.ExecuteNonQuery();
return NumeroAffetto.ToString();
catch (Exception ex)
return ex.Message;
finally
Comando.Connection.Close();
private void button1_Click(object sender, EventArgs e)
DoLocalDbCmd cmd = new DoLocalDbCmd();
string cmdex = cmd.RunSqlCmd("insert into TBL_PROVA (BELLO) VALUES ('VERO')");
MessageBox.Show(cmdex);
代码的执行没有错误,我检索到受影响的行数 = 1。
但是如果我查询数据库之后没有插入任何行。
有人可以向我建议有什么问题吗?
提前谢谢你
皮尔卡洛
【问题讨论】:
如何检查数据库的插入? DataDirectory 是一个替换字符串,当您的程序在 DEBUG 模式下(在 VS IDE 内)运行时,它指向您的 BIN\DEBUG 文件夹或 APP_DATA(在 ASP.NET 应用程序中) 请更改问题的标题。这令人困惑。 LocalDB 是 Sql Server Express 2012 的名称,它不是作为服务安装在单台 PC 上的。相反,您指的是 Sql Compact Edition,一种不同类型的数据库 【参考方案1】:当这些条件全部或部分存在于您的项目中时,这是一种常见的情况。
您有一个带有DataDirectory
替换的连接字符串
字符串。
您在服务器资源管理器上有一个指向 SDF 的连接
位于项目目录中的文件。
您已将属性Copy To Output Directory
设置为Copy Always
在项目项中列出的 SDF 文件上。
当您在 VS 的 IDE 中运行程序时,项目文件夹中的 SDF 文件会按照 Copy To Output Directory
的设置复制到输出目录 (BIN\DEBUG),这最终可能导致文件被覆盖已存在于 BIN\DEBUG 中。
您运行代码并将数据正确插入到 BIN\DEBUG 文件夹中的文件中。
您停止程序并使用服务器资源管理器检查记录是否存在,但您没有看到任何新记录,因为您正在查看项目文件夹中的文件。
您开始一个新的调试会话,并且 BIN\DEBUG 中的文件再次被空文件覆盖。
所以...将属性 Copy to the Output Directory
更改为 Copy Never
以停止此复制,更改服务器资源管理器中的连接以指向 BIN\DEBUG 文件夹中的数据库(或添加另一个保留旧的架构更改和新的架构来验证您的 DML 操作)
【讨论】:
以上是关于插入本地 Sql Server CE 不插入的主要内容,如果未能解决你的问题,请参考以下文章