我试图在Local主持器上连接到我的数据库,但由于某种原因,它会引发异常,我找不到为什么以及何处。
private void Initialize()
{
server = "localhost";
database = "dbname";
uid = "uname";
password = "pass";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new SqlConnection(connectionString);
}
这是我的初始化函数;我的问题是:
private bool OpenConnection()
{
try
{
connection.Open();
return true;
}
...
当我调试程序时,它将停留在" Connection.open((;"上。线一段时间,然后我在控制台上看到system.data.dll中的" system.data.sqlclient.sqlexception"。但这并没有崩溃,只是跳过。
如果要与MySQL打开连接,则不使用System.Data.SqlClient
名称空间中的类,而是使用MySql.Data.MySqlClient
这些类是 mysqlConnection , mysqlcommand , mysqldatareader 等...
如果您尝试使用SQLConnection类,则如果要打开的数据库为mySQL,则会收到此错误,因为它只能与SQL Server,SQL Server Express或LocalDB数据库系统一起使用。
connection = new MySqlConnection(connectionString);
当然,要使用 mysql.data.mysqlclient 命名空间,您需要下载并安装mySQL Net连接器,然后将参考添加到您的项目中,将其添加到汇编mysql.data.dll(和使用mysql.data.mysqlclient 添加到需要使用这些类的每个CS文件的顶部(
它没有崩溃,因为您正在打开try-catch块内的连接,因此程序认为您正在处理异常。如果您希望它崩溃,请摆脱Try-Catch块。(这将是一个不良的用户体验。(
另外,在您的trycatch捕获之后,您可以检查连接有效,然后如果没有进行操作。
if ((connection == null) || (connection.State != ConnectionState.Open)) {
/* do something here to indicate to the user there was an issue.
}