SQL Server数据库与我在c中的项目同步#
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马哈詹
这个片段建议,我认为你在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之类的东西。
非常感谢,先生, – Saurabh 2012-03-30 03:29:53
所以你的意思是,而不是| DataDirectory | \\ Database_File.mdf我应该连接数据库与sql服务器正确.. ?? – Saurabh 2012-03-30 03:31:13
@Saurabh出于开发的目的,我会在SQL Server上使用数据库。但是,请注意,如果您正在开发它,那么您可能会犯错误并且搞砸一些东西,这就是为什么VS每次都会用一个好的副本覆盖您的数据库。稍后,您可能希望从SQL Server中获取最终的'.mdf',并使用用户实例(即使它们已弃用)或SQL Server LocalDB将其与应用程序打包在一起。 – 2012-03-30 03:38:02
从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查询以及调用存储过程等等的详细信息。
请注意,TRY CATCH {throw;}是一个默认行为。您可以删除这些,它不会改变任何东西到您的应用程序 – Mathieu 2012-03-30 02:48:31
谢谢先生...但使用try catch只是一个小应用程序的选项...我们使用它或它不会影响这个问题... – Saurabh 2012-03-30 02:52:40
请点在代码假设更新数据库的地方,因为我没有看到它!如果它是cmd1,它是一个空插入查询! – Mathieu 2012-03-30 02:53:35