简单的SQL插入

时间:2011-12-18 01:07:16

标签: c# sql sql-server insert sql-server-ce

我是数据库的新手,我正在尝试使用SQL添加新记录。代码第一次运行正常,但第二次抛出错误,说它无法将重复项写入唯一键。第三次运行正常,但第四次抛出错误。基本上,似乎每隔一段时间,就会抛出错误。我理解为什么在写入数据时会抛出错误,但是当我检查数据库时,它仍然是空的。在我的代码中我做错了什么导致查询不打扰写数据?

编辑如果我直接在数据库中输入SQL,它就可以运行。当我使用下面的C#代码时,它不起作用。

using (SqlCeConnection con = new SqlCeConnection(conString))
{
    con.Open();
    using (SqlCeCommand com = new SqlCeCommand("INSERT INTO User (Name, Age, URL) VALUES ( @name, @age, @url )", con))
    {
        com.Parameters.AddWithValue("@name", "James Y");
        com.Parameters.AddWithValue("@age", 28);
        com.Parameters.AddWithValue("@url", "www.example.com" );
        com.ExecuteNonQuery();
    }
}

4 个答案:

答案 0 :(得分:1)

我已经部分弄明白了。显然你还必须下载SQL CE Tools for Visual Studio。我做了这个,我有一个新的选项,将SQL CE 4包含到我的项目中(我使用的是SQLCE选项,假设它默认使用4.0,因为那是我安装的那个)。现在唯一的问题是,当我尝试添加它时,它表示项目类型(控制台项目)不支持它。我在MSDN上看到一篇帖子说SQLCE 4仅适用于网络项目,但它是几个月后发布的一篇文章,目前的下载页面表示它适用于网络或桌面应用程序。无论哪种方式,这都是一个太麻烦的麻烦,所以如果我不能很快解决这个问题,我只会寻找一个备用数据库。

已修复我卸载了SQLCE4和SQLCE工具,然后重新安装它们。

答案 1 :(得分:0)

尝试并执行以下SQL:

INSERT INTO [User] (Name, Age, URL) VALUES ( @name, @age, @url )

用户是sql server中的保留字。您应该尽量不将您的表命名为“user”。

答案 2 :(得分:0)

名称是保留字。将其包裹在[]

using (SqlCeCommand com = new SqlCeCommand("INSERT INTO User ([Name], Age, URL) VALUES ( @name, @age, @url )", con))

答案 3 :(得分:0)

由于您在连接字符串中使用DataDirectory,因此该文件将复制到bin / debug文件夹中,因此您有多个数据库副本,一个在项目中,一个在调试文件夹中。使连接字符串成为完整路径,以避免在调试时出现任何混淆!