2012-03-30 135 views
2

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

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;} 
} 

程序以我想要的方式运行,但是当我查看数据库表时未保存更改。例如:当我登录时,登录信息在下次运行时不会显示在数据库中。 登记册的情况也是如此......每次运行应用程序时,我都必须重复注册。我不知道错误在哪里。请帮我先生我要去的地方错了....

感谢&问候 SAURABH马哈詹

+0

请注意,TRY CATCH {throw;}是一个默认行为。您可以删除这些,它不会改变任何东西到您的应用程序 – Mathieu 2012-03-30 02:48:31

+0

谢谢先生...但使用try catch只是一个小应用程序的选项...我们使用它或它不会影响这个问题... – Saurabh 2012-03-30 02:52:40

+0

请点在代码假设更新数据库的地方,因为我没有看到它!如果它是cmd1,它是一个空插入查询! – Mathieu 2012-03-30 02:53:35

回答

0

这个片段建议,我认为你在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之类的东西。

+0

非常感谢,先生, – Saurabh 2012-03-30 03:29:53

+0

所以你的意思是,而不是| DataDirectory | \\ Database_File.mdf我应该连接数据库与sql服务器正确.. ?? – Saurabh 2012-03-30 03:31:13

+0

@Saurabh出于开发的目的,我会在SQL Server上使用数据库。但是,请注意,如果您正在开发它,那么您可能会犯错误并且搞砸一些东西,这就是为什么VS每次都会用一个好的副本覆盖您的数据库。稍后,您可能希望从SQL Server中获取最终的'.mdf',并使用用户实例(即使它们已弃用)或SQL Server LocalDB将其与应用程序打包在一起。 – 2012-03-30 03:38:02

0

从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查询以及调用存储过程等等的详细信息。

相关问题