how to manage multiple ado.net database connections from asmx Web Service
由于IIS为每个请求分配一个工作线程,我打算创建新对象来为每个请求提供服务。 我有两个问题:
创建新对象以服务每个请求是否有效? (甚至还有替代?)
它是创建新连接的线程安全,高效和最佳实践,并为每个请求打开和关闭它,如下所示:
1 2 3 4 5 6 7 | using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString)) { conn.Open(); MySqlCommand cmd = new MySqlCommand("SELECT password FROM Admin WHERE username='" + username +"'", conn); object dbp = cmd.ExecuteScalar(); conn.Close(); } |
PS。 此示例来自此站点。 我使用oracle db。
谢谢:马蒂
当您执行
1 2 3 4 5 6 7 8 | var connectionString = ConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString; using (var conn = new MySqlConnection(connectionString)) using (var cmd = conn.CreateCommand()) { conn.Open(); cmd.CommandText ="SELECT count(*) from some_table"; object result = cmd.ExecuteScalar(); } |
正如Darin在答案中正确指出的那样,您应该允许连接池机制完成其工作。 不要试图建立一些"聪明"的东西,它不会那么好。
具有数据库连接等昂贵资源的黄金法则是延迟获取并及早发布。 只要你遵守那个,那么你会做得很好。