2

祝大家好日子,

我是编程新手,我正在构建一个简单的程序。只需按钮并显示结果。这就是我连接数据库的方式。我使用 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()

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

4

3 回答 3

2

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

  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。

于 2013-04-22T16:32:11.487 回答
0

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

于 2013-04-22T16:22:46.943 回答
0

基本上,如果您考虑使用 c# 连接到数据库,则有三种类型。

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

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

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

于 2013-04-22T16:35:56.133 回答