如何连接到本地数据库并在C#中更新数据集?

如何连接到本地数据库并在C#中更新数据集?,c#,wpf,database,visual-studio,mdf,C#,Wpf,Database,Visual Studio,Mdf,我已将一些产品(产品包含:唯一id-主键、名称、价格、数量)存储在本地数据库文件(Stock.mdf,产品的表称为“表”)中 该文件位于Visual Studio中的“我的项目”文件夹中。当有人调用表单(WPF)中的操作时,应更新条目(新数量) 在我的C代码文件中,我使用以下代码连接到数据库: System.Data.SqlClient.SqlConnection con; con = new System.Data.SqlClient.SqlConnection(); con.Connecti

我已将一些产品(产品包含:唯一id-主键、名称、价格、数量)存储在本地数据库文件(Stock.mdf,产品的表称为“表”)中

该文件位于Visual Studio中的“我的项目”文件夹中。当有人调用表单(WPF)中的操作时,应更新条目(新数量)

在我的C代码文件中,我使用以下代码连接到数据库:

System.Data.SqlClient.SqlConnection con;
con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = @"Data Source=.\SQLEXPRESS;
               AttachDbFilename=|DataDirectory|\Stock.mdf; |
               Integrated Security=True;
               Connect Timeout=30;
               User Instance=True";
//Do i need the connect timeout? Found it somewhere in the web
我知道我可以使用以下命令在SQL中更新表:

UPDATE table
SET Quantity=newQuantity
WHERE Id=GivenId;

如何连接到本地数据集并使用c#中的新数量更新产品?

首先,请使用
使用
语句。它们将确保调用
IDisposable.Dispose()

从内存写入:

string cs = @"Data Source=.\SQLEXPRESS;
           AttachDbFilename=|DataDirectory|\Stock.mdf; |
           Integrated Security=True;
           Connect Timeout=30;
           User Instance=True";

using (SqlConnection con = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("UPDATE table SET Quantity=@q WHERE Id=@Id", con))
{
    cmd.Parameters.AddWithValue("@q", newQuanity);
    cmd.Parameters.AddWithValue("@Id", GivenId);
    con.Open();
    cmd.ExecuteNonQuery();
}
我需要连接超时吗?在网上的某个地方找到的

在大多数情况下,违约是可以接受的

请注意,最好将连接字符串放在app.config(或web.config,用于web应用)中


要在Microsoft Visual studio中使用C#连接到Sql数据库,必须手动添加
System.Data.SqlSeverCe.dll
名称引用,如下所示:

  • 右键单击您的项目>>添加参考

  • 浏览>>>C:\Program Files\Microsoft SQL server Compact edition\v3.5\Desktop

  • 加载>>>System.Data.SqlSeverCe.dll>>>添加


您是否遇到了错误或其他问题?或者你只是问如何在c#?@evan-l中执行更新我问如何连接到本地数据库我在app.config中添加了connectionstring:“当我尝试它时,我得到了异常”关键字不受支持的“providername”。在这一行引发异常:“使用(SqlConnection con=new SqlConnection(cs))“@Hack4Life:确保providerName是一个单独的属性。也就是说,仔细检查你的报价是否与我的答案相符。其他人在connectionString的引号中使用providerName,而不是单独的Okey,从而得到了完全相同的错误,谢谢@eric-j!现在我没有得到一个错误。我用try/catch包围了整个街区。当我设置制动点并运行程序时,它将不起作用。当涉及con.Open()时,程序会毫无例外地停止。程序不会只在con.Open()处停止。代码可能会暂停30秒(连接超时),但会继续正常运行或在该点引发异常。行号:0,源:.Net SQLClient数据提供程序。。我是否需要Microsoft SQL Server来执行此操作?我只有Visual Studio 2012 Professional
<connectionStrings>
  <add name="MyConnectionName" connectionString="Data Source=.\SQLEXPRESS;
           AttachDbFilename=|DataDirectory|\Stock.mdf; |
           Integrated Security=True;
           Connect Timeout=30;
           User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>
string cs = 
  ConfigurationManager.ConnectionStrings["MyConnectionName"].ConnectionString;