【问题标题】:SQL Server Database synchronization with my project in c#SQL Server 数据库与我在 c# 中的项目同步
【发布时间】:2012-03-30 02:45:28
【问题描述】:

先生, 我对 SQL Server 中的数据库有一些问题。 我的项目是带有登录方法的桌面应用程序.... 我的程序是用 C# 编写的,可以正常执行,我的查询中没有错误... 但是数据不会存储回程序插入或更新的数据库...我的数据库是由 Visual Studio 2010 创建的,作为数据文件夹中的单独 mdf 文件... 所以请在这方面帮助我。这是一个示例代码:

private void btnLogin_Click(object sender, EventArgs e)
{
  try
  {
     using (SqlConnection cn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database_File.mdf;Integrated Security=True;User Instance=True"))
     {
        using (SqlCommand cmd = new SqlCommand("select * from table_users where user_name='" + txtBoxUserName.Text + "' and user_password='" + txtBoxUserPass.Text + "' ",cn))
        {
          cn.Open();                        
          dr = cmd.ExecuteReader();
          while (dr.Read())
          {
            if (dr["user_name"].ToString() == txtBoxUserName.Text && dr["user_password"].ToString() == txtBoxUserPass.Text)
            {
              ...
              ...
              try
              {
                using (SqlCommand cmd1 = new SqlCommand("insert into table_user(id,user_name,user_status) values(" + key + "," + active_user_name + "',"+ user_status + ")",cn))
                {
                  cmd1.ExecuteNonQuery();
                  Thread form_name = new Thread(new ThreadStart(thread_Proc_form_name));
                  form_name.Start();
                }
              }
              catch  { throw;}
            }
          }
        }
     }
  }
  catch  { throw;}
}

程序按我的意愿运行,但是当我查看数据库表时,没有保存任何更改。例如:当我登录时,下次运行时数据库中不会显示登录信息。 注册也是如此……每次我运行应用程序时,我都必须一次又一次地注册。我不知道错误在哪里。请先生帮我看看我哪里出错了......

感谢和问候 索拉布·马哈詹

【问题讨论】:

  • 请注意,TRY CATCH {throw;} 是默认行为。你可以删除这些,它不会改变你的应用程序
  • 谢谢先生...但是使用 try catch 只是小型应用程序的一个选项...我们是否使用它几乎不会影响问题...
  • 请指出代码在哪里更新数据库,因为我没有看到它!如果是cmd1,就是空插入查询!
  • 即使你不写,你的 TRY CATCH 也在那里。它隐含地在那里。这只是代码中的噪音。
  • 我已经编辑了插入和选择查询的问题......谢谢先生......

标签: c# sql-server visual-studio-2010 sql-server-2005 c#-4.0


【解决方案1】:

这个 sn-p 向我建议您在 Visual Studio 中的解决方案中有一个 Database_File.mdf

AttachDbFilename=|DataDirectory|\\Database_File.mdf 

每次构建项目时,Database_File.mdf 将被复制到输出目录,覆盖之前的任何文件。

此行为是设计使然。

注意user instances are deprecated,您应该考虑在开发期间将Database_File.mdf 附加到您的SQL Express 实例或使用SQL Server LocalDB 之类的东西。

【讨论】:

  • 所以你的意思是我应该用 sql server 连接数据库而不是 |DataDirectory|\\Database_File.mdf 对..??
  • @Saurabh 出于开发目的,我会在您的 SQL Server 上使用数据库。但是请注意,如果您针对它进行开发,您可能会犯错误并搞砸东西,这就是为什么 VS 每次都会用一个好的副本覆盖您的数据库。稍后,您可能希望从 SQL Server 中获取最终的.mdf,并使用用户实例(即使它们已被弃用)或 SQL Server LocalDB 将其打包到您的应用程序中。
  • 非常感谢先生,现在我应该使用 sql server 进行详细解释...。感谢和问候 Saurabh Mahajan
【解决方案2】:

要从 C#.NET 连接到 SQL Server,您需要创建一个连接字符串,如下所示:

private SqlConnection connection; 
private string connectionString = @"Server=(local);Database=Embedding_SQL_Test;User ID=sa;Password=123"; connection = new SqlConnection( connectionString );

接下来,你使用上面创建的SqlConnection对象来创建SqlCommand,如下图:

SqlCommand cmd = new SqlCommand( "select * from Customer where CustomerID = @Cid", connection);

此处显示的 SQL 查询可以替换为 SELECT、INSERT、UPDATE 查询等。

接下来要在数据库中执行 SQL 查询,请使用以下方法:ExecuteReader - 执行 SELECT 查询,ExecuteNonQuery - 执行 INSERT、DELETE、UPDATE 和 SET 语句。

这是关于如何从 C# 连接到 SQL Server 数据库并在数据库中执行 SQL 查询的非常简短的描述。有关连接字符串、方法及其参数的详细信息,请查看以下链接:(http://www.shahriarnk.com/Shahriar-N-K-Research-Embedding-SQL-in-C-Sharp-Java.html) 在这里您还将找到有关如何将参数传递给 SQL 查询以及调用存储过程等详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2015-02-27
    • 2021-08-30
    相关资源
    最近更新 更多