使用C#连接数据库的好方法

时间:2013-04-22 16:16:56

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

大家好日子,

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

有什么其他方式可以连接到数据库,也许是一种更好的方法。如果你可以帮助我提高我的编程水平,那将是很棒的。对不起,如果你发现这个问题愚蠢。谢谢!

3 个答案:

答案 0 :(得分:2)

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

  1. 您没有正确关闭连接。如果您的sql语句抛出异常,您将永远不会到达.Close()调用。根据您的数据库类型及其配置方式,这可能会导致数据库服务器的可用连接最大化并有效锁定您自己的数据库。
  2. “idPeople = 1”中的“1”来自哪里?有一种正确的方法和错误的方法来构建包含像“1”这样的参数数据的查询。确保以正确的方式进行。
  3. “SELECT *”被认为是错误的形式...更好地指定列列表。
  4. 以下是解决所有这些问题的示例:

    //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。

答案 1 :(得分:0)

一般来说,您将使用Entity Frameworknhibernate之类的ORM。

答案 2 :(得分:0)

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

  1. connected-是一种通过打开和关闭连接来访问数据库的方法。也就是说,您通过SQL命令直接访问数据库。
  2. disconnected-例如,使用存储过程而不是使用SQL命令直接访问数据库。
  3. 实体框架 - 是代表您连接数据库的框架。您只需要配置一次,并且通过类对象可访问性非常灵活。这个框架最适合使用LINQ。
  4. 我建议你阅读Andrew Troelsen撰写的题为“Pro C#2010和.NET 4平台”第5版的书。 Pro C# 2010 and the .NET 4 plateform。你可以得到最新的版本。

    还有另一个名为NHibernate的框架,它与Java中的Hibernate几乎相似