【问题标题】:Good ways to connect to database with C# [closed]使用 C# 连接到数据库的好方法 [关闭]
【发布时间】:2013-04-15 15:11:35
【问题描述】:

祝大家今天好,

我是编程新手,我正在构建一个简单的程序。只需按钮并显示结果。这就是我连接数据库的方式。我使用 MySQL.data.dll 并将其添加为参考。

string connString = "Server=localhost;database=super;uid=root;password=root";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand command = conn.CreateCommand();
command.CommandText = "SELECT * FROM people WHERE idPeople=1";
conn.Open();
// get data
conn.Close()

还有什么其他方法可以连接到数据库,也许是一种好的做法,一种更好的方法。如果您能帮助我提高我的编程水平,那就太好了。对不起,如果你觉得这个问题很愚蠢。谢谢!

【问题讨论】:

  • 非常感谢!谢谢!
  • 这取决于您的应用程序

标签: c# mysql database database-connection connection-string


【解决方案1】:

这是在正确的轨道上,但你错过了几个重要的点:

  1. 您没有正确关闭连接。如果您的 sql 语句引发异常,您将永远无法到达 .Close() 调用。根据您的数据库类型及其配置方式,这可能会导致您的数据库服务器的可用连接最大化,并有效地将您自己锁定在您自己的数据库之外。
  2. “idPeople=1”中的“1”从何而来?构建包含像“1”这样的参数数据的查询有正确的方法和错误的方法。确保以正确的方式进行操作。
  3. “SELECT *”被认为是错误的形式...最好指定列列表。

这是一个解决所有这些问题的示例:

//often this will loaded from a config file
string connString = "Server=localhost;database=super;uid=root;password=root";

string sql = "SELECT <column list> FROM people WHERE idPeople= @idPeople";
using (var cn = new MySqlConnection(connString))
uinsg (var cmd = new MySqlCommand(sql, cn))
{
    cmd.Parameters.Add("@idPeople", MySqlDbType.Int32).Value = 1;

    conn.Open();
    //get data
}

你会看到有些人告诉你使用 ORM,比如 NHibernate、linq-to-sql、Entity Framework 等。我倾向于认为还有一个地方可以使用手工编码和调整的 sql,但我不知道。不太注意他们。不过,像Dapper 这样的轻量级数据访问框架可能会有所帮助。这些不仅可以从我刚刚编写的内容中提取出大部分样板代码,还可以从业务和传输对象层中提取出大部分样板代码,并且仍然可以让您编写所需的任何 sql。

【讨论】:

  • 谢谢!非常感谢!没有这么想过。我想我还需要阅读。
【解决方案2】:

如果你想用c#连接数据库,基本上有三种类型。

  1. connected- 是一种通过打开和关闭连接来访问数据库的方法。也就是说,您正在通过 SQL 命令直接访问数据库。
  2. disconnected- 例如,使用存储过程而不是使用 SQL 命令直接访问数据库。
  3. Entity Framework- 是一个代表您连接数据库的框架。您只需要配置一次,并且通过类对象可访问性非常灵活。这个框架也最适合使用 LINQ。

我建议您阅读 Andrew Troelsen 的《Pro C# 2010 和 .NET 4 平台》第 5 版一书。 Pro C# 2010 and the .NET 4 plateform。您可以获取最新版本。

还有一个叫做 NHibernate 的框架,它几乎类似于 Java 中的 Hibernate

【讨论】:

    【解决方案3】:

    一般来说,您将使用像 Entity Frameworknhibernate 这样的 ORM。

    【讨论】:

    • 我明白了。我只想知道连接到数据库的最佳方法以及使用数据库构建系统的一些技术。谢谢你的链接。我一定会读的!
    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 2022-01-23
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多