c# - 为什么该行没有被插入到数据库中? C#

标签 c# sql-server

最后更新

我想我找到了为什么会这样。每次我尝试调试我的应用程序时,Visual Studio 都会在调试文件夹中创建一个新的数据库文件。当我的应用程序关闭时,此文件会被删除,因此我在运行时所做的每项更改都会被删除。我不知道如何更改它,但我会在弄清楚后发布它。

**

编辑以添加更多信息

**

我在 C# 中创建了一个类来处理数据库操作。我有一种方法可以从工作正常的数据库中读取数据。但是当我尝试插入行时,没有任何反应。没有错误或异常,代码按预期运行,到达“return true”语句,但是当我之后检查数据库时,我没有得到任何新数据。数据库现在是空的,所以它与任何唯一字段没有任何冲突。 id 字段不是自动生成的,所以这也不是问题。

代码如下:

public bool saveCity(City c)
    {
        string query = "INSERT INTO [dbo].[cities] ([Id], [Name], [Latitude], [Longitude], [Radius], [LastUpdate])" +
            " VALUES (@Id, @Name, @Latitude, @Longitude, @Radius, @LastUpdate);";
        try
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                using (SqlCommand cmd = new SqlCommand(query, conn))
                {
                    conn.Open();
                    cmd.Parameters.AddWithValue("@Id", c.Id);
                    cmd.Parameters.AddWithValue("@Name", c.Name);
                    cmd.Parameters.AddWithValue("@Latitude", c.Latitude);
                    cmd.Parameters.AddWithValue("@Longitude", c.Longitude);
                    cmd.Parameters.AddWithValue("@Radius", c.Radius);
                    cmd.Parameters.AddWithValue("@LastUpdate", c.Update);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            }
        }
        catch (Exception)
        {
            return false;
        }
    }

connString 被定义为类字段:

connString = Properties.Settings.Default.DBConnectionString;

我的数据库中没有任何触发器,或者没有任何东西可以在插入后删除我的行。目前,它只有一张表 cities,如下所示:

DB screen capture

City类的代码:

class City
    {
        public int Id;
        public string Name;
        public int Radius;
        public double Latitude;
        public double Longitude;
        public DateTime Update;

        public City()
        {
            Id = -1;
            Name = "";
            Radius = 0;
            Latitude = 0;
            Longitude = 0;
            Update = DateTime.Now;
        }


}

这是我第一次使用 C# 数据库连接,所以我可能缺少一些非常明显和愚蠢的东西,但这让我发疯。

最佳答案

最后,我找到了解决方案。每次尝试调试时,Visual Studio 都会创建一个新的数据库实例。有人针对此问题发布了解决方法,所以这里是链接:

Can I commit changes to actual database while debugging C# in Visual Studio?

关于c# - 为什么该行没有被插入到数据库中? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132996/

相关文章:

c# - 永远不会到达 Xamarin Android Mainactivity 代码

c# - 在大表上搜索文本的最有效方法是什么?

c# - asp.net gridview 奇怪的行为

java - 是否可以在 sql server 上使用 jdbc 获取查询计划?

将列合并为一个的 SQL 函数

c# - 是否可以将 await 与使用自定义函数的查询一起使用

c# - 错误返回 "No job functions found. Try making your job classes and methods public"后,尝试在 Linux 中构建 Azure 函数应用程序

sql-server - 在 SQL Server 中查找锁定的表

c# - Linq 中字符(字符串)编码的数字与数字的比较

sql-server - SQL 服务器 : How should I structure my index to improve lookup time?