首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >INSERT语句影响1行,但显示它实际上没有更新SQL数据库

INSERT语句影响1行,但显示它实际上没有更新SQL数据库
EN

Stack Overflow用户
提问于 2011-07-09 18:05:21
回答 3查看 4K关注 0票数 1

我检查了其他堆栈溢出问题,以找到答案,但我只是找不到解决这个问题的办法。我试图将字符串数据插入到SQL (本地数据库)中。

我可以从数据库中读取数据,但无论是硬编码还是尝试添加参数,我都不能插入数据。

要修改的表称为users。它有3列:IDnameemail

下面是我使用的代码:

代码语言:javascript
代码运行次数:0
运行
复制
string connection = Properties.Settings.Default.LocalDBConnectionString;

using (var con = new SqlCeConnection(connection))
{
    con.Open();

    // (I also tried adding with parameters but couldn't get it working.)
    using (var com = new SqlCeCommand("INSERT INTO users (name, email) " +
                                      "VALUES (N'jimmy', N'email@jim.com')", con))
    {
        int numRowsAffected = com.ExecuteNonQuery();

        // This returns '1 row affected' but doesn't actually update the database
        Console.WriteLine(numRowsAffected);
        Console.ReadKey();
    }
}

虽然控制台输出1 (因为1行受影响),但当我返回数据库并进行检查时,它没有插入新数据。

我跟踪本教程,但是只有读的工作,插入或写不起作用。

我还发现了类似的堆栈溢出问题,但是使用参数仍然无法使它工作。

编辑:

我的连接字符串是:

代码语言:javascript
代码运行次数:0
运行
复制
Data Source=|DataDirectory|\LocalDB.sdf

我不知道如何找到Build,它是我在控制台应用程序解决方案中创建的本地数据库,它存储在项目目录中。

我是在“调试”配置,如果这有帮助?

下面是我找到在互联网上的另一个例子

代码语言:javascript
代码运行次数:0
运行
复制
SqlCeConnection con = new SqlCeConnection(Properties.Settings.Default.LocalDBConnectionString);
con.Open();

SqlCeCommand comInsert = new SqlCeCommand ("INSERT INTO users(name, email) VALUES('value 1', 'value 2')", con);
comInsert.ExecuteNonQuery();

SqlCeCommand comSelect = new SqlCeCommand("SELECT * FROM users", con);
SqlCeDataReader reader = comSelect.ExecuteReader();

while (reader.Read())
{
    Console.WriteLine("{0} {1}", reader["name"], reader["email"]);
    Console.ReadKey();
}

con.Close();

我只是复制和粘贴这个,并改变了主要的变量。此示例暂时插入数据,但当我转到Visual的服务器资源管理器并查看表时,它尚未更新。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-09 18:40:41

您确定INSERT进入的数据库和使用服务器资源管理器查看的数据库是相同的吗?

记住,我们在这里讨论的是基于文件的DB ( Server )。因此,可以将INSERT**ing转换成数据库的副本,然后查看(未更改的)原始文件。

  • DB文件是解决方案的一部分吗?如果是,它是否被复制到输出目录(例如bin\Debug)?检查相应的解决方案项的属性,如下面的屏幕截图(很抱歉它是德语的):

  • 连接字符串中的DataDirectory究竟指向哪里?如果你不确定,暂时用绝对的方法代替它,看看它是否解决了你的问题。

确保您的连接字符串确实指向您正在使用的服务器资源管理器所查看的数据库!

票数 4
EN

Stack Overflow用户

发布于 2013-04-02 23:55:09

我想问题就在这里:当您从Visual运行程序时,它连接到调试(或发布)目录中的数据库,而不是连接到项目目录中的数据库。所以,尝试使用完整路径而不是Data Source=|DataDirectory|\LocalDB.sdf,尝试这样的东西:Data Source=C:\Visual Studio 2008\Projects\MyProject\LocalDB.sdf。对我起作用了。

票数 1
EN

Stack Overflow用户

发布于 2011-10-28 11:49:19

我检查了解决方案资源管理器连接字符串并粘贴到代码文件中,解决了问题,因此对连接字符串进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6636513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档