【问题标题】:Can I use same connection in my mainwindow in other windows? C# wpf mysql [duplicate]我可以在其他窗口的主窗口中使用相同的连接吗? C# wpf mysql [重复]
【发布时间】:2021-11-13 12:09:30
【问题描述】:

我有一个问题,我正在处理一个需要连接到 MySQL 数据库的 C# WPF 项目。我曾经使用 C# 使用 SQL Server,但由于我需要这个项目来从在线数据库上传/读取数据,所以我必须使用 MySQL,所以我在网上搜索并找到了这个解决方案:

using MySql.Data.MySqlClient;
    
connString = "SERVER=localhost;PORT=3306;DATABASE=test;UID=root;PASSWORD=;SslMode=none;";
            try
            {
                conn = new MySqlConnection();
                conn.ConnectionString = connString;
                conn.Open();
                MessageBox.Show("Connection Success");
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }

我在我的主窗口中使用它并且它有效,现在我有另一个问题是如何在他们的窗口上使用这个连接?我应该在所有窗口中使用相同的代码吗?或者我可以从主窗口使用它? 例如,我在另一个窗口中有一个 DATAGRID,我需要将数据库中的数据读入 DATAGRID。这怎么可能?

【问题讨论】:

  • 这能回答你的问题吗? C# Data Connections Best Practice? 不,绝对不是:您 缓存连接对象,在需要时从连接字符串创建它们,并使用using 块关闭

标签: c# mysql sql database wpf


【解决方案1】:

C# 数据库连接对象不是线程安全的。当你需要它时,你应该创建它、打开它、使用它、关闭它并丢弃它。您可以从应用程序中任何位置的任何代码执行此操作。但不要尝试保留连接缓存。

这似乎是一个荒谬的开销,但事实并非如此。数据库连接对象代码维护一个pool 的打开连接:当您的代码停止使用连接(通过关闭和处理它)时,它会回到池中。从那里它被下一个请求相同连接的代码重用。

在这方面,MySql 连接器的工作方式与 Microsoft 提供的 SQL Server 连接器相同。

【讨论】:

猜你喜欢
  • 2019-06-15
  • 2019-11-25
  • 2015-06-15
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
相关资源
最近更新 更多