使用MySql.Data.MySqlClient;
带有“ using”的简单连接代码:
using (IDbConnection sql = new MySqlConnection(ConnectionString))
{
try
{
sql.Open();
var x = sql.Execute("query...");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
“正在使用”调用Dispose(),但是如果Dispose()调用Close()?
如何确定使用时是否需要在MySqlConnection中调用Close()?
答案 0 :(得分:1)
什么也不做。
Dispose
将正确关闭连接。
摘自文档:
Dispose()-释放MySqlConnection使用的所有资源
形成MySqlConnection.Dispose的源代码
void IDisposable.Dispose()
{
if (State == ConnectionState.Open)
Close();
}
答案 1 :(得分:0)
您可以在此处尝试,您可以将其放在finally子句中
if (sql.State == ConnectionState.Open)
{
sql.Close();
}
答案 2 :(得分:0)
这是我正在使用的示例DBConnect类。使用此类,在您想要的任何地方创建数据库连接真的很容易。只需创建此类的对象即可。
这是针对MySQL数据库的,如果您使用的是sql服务器,只需将MySql替换为Sql
这是我的DBConnect类
using System ;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
namespace test
{
class DBConnect: IDisposable
{
private static String server = "localhost";
private static String port = "3306";
private static String database = "testDB";
private static String username = "root";
private static String password = "";
private static String connectionString = "Server=" + server + ";Port=" + port + ";Database=" + database + ";Uid=" + username + ";Password=" + password + ";";
public MySqlConnection con = new MySqlConnection(connectionString);
public DBConnect() //Constructor
{
try
{
con.Open();
Console.WriteLine("Database connected");
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
Console.WriteLine("Database Connection Failed");
throw new Exception();
}
}
public void Dispose()
{
con.Close();
}
}
}
这是您使用此类的方法
using(DBConnect db = new DBConnect())
{
String q = "your sql Statement here";
MySqlCommand cmd = new MySqlCommand(q, db.con);
cmd.ExecuteNonQuery();
MessageBox.Show("Item added", "Done", MessageBoxButtons.OK,mesageBoxIcon.Information);
}