C# 如何将数据保存到数据库

C# 如何将数据保存到数据库,c#,sql-server-2008,C#,Sql Server 2008,我已经搜索并找到了将数据保存到数据库的代码,连接字符串正常,没有抛出异常/错误,但我不知道为什么这段代码没有将数据保存到我的数据库中 string query = "Insert Into BookConfiguration (BookNum, x_axis, y_axis, BookName) Values (@BookNum, @x_axis, @y_axis, @BookName)"; string connStr = "Data Source=.\\SQLEXPRESS;

我已经搜索并找到了将数据保存到数据库的代码,连接字符串正常,没有抛出异常/错误,但我不知道为什么这段代码没有将数据保存到我的数据库中

    string query = "Insert Into BookConfiguration (BookNum, x_axis, y_axis, BookName) Values (@BookNum, @x_axis, @y_axis, @BookName)";
    string connStr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\BookShelf.mdf;Integrated Security=True;User Instance=True";


    try
    {
        using (SqlConnection conn = new SqlConnection(connStr))
        {                   
                SqlDataAdapter da = new SqlDataAdapter();
                da.InsertCommand = new SqlCommand(query, conn);
                da.InsertCommand.Parameters.Add("@BookNum", SqlDbType.Int).Value = quantity;
                da.InsertCommand.Parameters.Add("@x_axis", SqlDbType.Int).Value = x;
                da.InsertCommand.Parameters.Add("@y_axis", SqlDbType.Int).Value = y;
                da.InsertCommand.Parameters.Add("@BookName", SqlDbType.Text).Value = openFileDialog1.FileName;
            conn.Open();    

            da.InsertCommand.ExecuteNonQuery();

            conn.Close();
        }
    }

    catch (SqlException ex)
    {
        MessageBox.Show("Error Occured " + ex.Message);
    }
编辑 我现在已经更改了代码,解决了同样的问题

代码:

我希望这是明确的,而不是含糊不清的


在c#visual studio 2010 sql server 2008中编码…

我几乎可以保证,因为您使用的是不推荐的用户实例/AttachDbFileName功能,所以您查看的数据库副本与程序不同

请参见@marc_s的答案,了解如何继续:


基本上,停止使用这个无用的功能。将您的数据库连接到SQL Server的真实实例,然后您的数据库是固定的,您可以连接到与您的程序相同的数据库副本…

我几乎可以保证,由于您使用的是不推荐使用的用户实例/AttachDbFileName功能,因此您查看的数据库副本与您的程序不同

请参见@marc_s的答案,了解如何继续:



基本上,停止使用这个无用的功能。将您的数据库连接到SQL Server的真实实例,然后您的数据库是固定的,您可以连接到与您的程序相同的副本…

如果没有错误,我的第一个猜测是存在隐式事务,而您没有提交它。另外,SqlDataAdapter有什么问题?似乎没有必要-您应该能够创建一个SqlCommand并直接使用它。我首先使用了SqlCommand,但问题相同,然后尝试了sqlDataAdapter,我甚至尝试了事务,但没有成功。您如何知道数据没有添加到数据库中?您是使用数据库资源管理器工具查看BookShelf.mdf的内容,还是在应用程序中的其他位置运行SELECT命令?每当我通过单击按钮执行此方法时,我都会使用VS db资源管理器工具检查表..停止使用用户实例+attachDbFileName!如果没有错误,我的第一个猜测是存在一个隐式事务,而您没有提交它。另外,SqlDataAdapter有什么问题?似乎没有必要-您应该能够创建一个SqlCommand并直接使用它。我首先使用了SqlCommand,但问题相同,然后尝试了sqlDataAdapter,我甚至尝试了事务,但没有成功。您如何知道数据没有添加到数据库中?您是使用数据库资源管理器工具查看BookShelf.mdf的内容,还是在应用程序中的其他位置运行SELECT命令?每当我通过单击按钮执行此方法时,我都会使用VS db资源管理器工具检查表..停止使用用户实例+attachDbFileName!这是一个小进入我的脑海请给予更多的解释,这可以帮助我,我会非常高兴thankful@user1415295你能告诉我哪部分不清楚吗?你读过marc的答案吗?这意味着这个功能(你在连接字符串中使用“用户实例”)在与AttachDbFileName结合使用时,会为每个使用它的用户/程序创建一个数据库的不同副本,将来将不受支持。SQL Server 2008发布时首次宣布了弃用:。。。在SQL Server 2012中,您应该使用SqlLocalDb进行独立开发。我这里有一个入门:我正在尝试,但是我以前没有创建过任何同名的数据库,但是我的应用程序和.mdf都有相同的名称。你认为这会造成问题吗?谢谢大家,我用简单的连接字符串string connStr=“Data Source=。\\SQLEXPRESS;Database=BookShelf2;Integrated Security=True;”创建了另一个数据库;它的工作数据正在保存到数据库感谢所有特别@Aaron Bertrand这是一个小进入我的脑海请给出更多的解释这可以帮助我,我会非常高兴thankful@user1415295你能告诉我哪部分不清楚吗?你读过marc的答案吗?这意味着这个功能(你在连接字符串中使用“用户实例”)在与AttachDbFileName结合使用时,会为每个使用它的用户/程序创建一个数据库的不同副本,将来将不受支持。SQL Server 2008发布时首次宣布了弃用:。。。在SQL Server 2012中,您应该使用SqlLocalDb进行独立开发。我这里有一个入门:我正在尝试,但是我以前没有创建过任何同名的数据库,但是我的应用程序和.mdf都有相同的名称。你认为这会造成问题吗?谢谢大家,我用简单的连接字符串string connStr=“Data Source=。\\SQLEXPRESS;Database=BookShelf2;Integrated Security=True;”创建了另一个数据库;数据正在被保存到数据库中,非常感谢@Aaron Bertrand
        try
        {
            using (TransactionScope scope = new TransactionScope())
            {

                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(query, conn))
                    {
                        cmd.Parameters.Add(new SqlParameter("@BookNum", quantity));
                        cmd.Parameters.Add(new SqlParameter("@x_axis", x));
                        cmd.Parameters.Add(new SqlParameter("@y_axis", y));
                        cmd.Parameters.Add(new SqlParameter("@BookName", openFileDialog1.FileName));
                        cmd.ExecuteNonQuery();
                    }
                    conn.Close();
        }

                scope.Complete();
            }
        }