我正在尝试连接到localhost上的数据库,但出于某种原因,它会引发异常,我无法找到原因和位置。
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'”。但它不会崩溃,只是跳过。
答案 0 :(得分:3)
如果您想打开与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 Connector然后add a reference下载并安装到项目中以安装程序集MySql.Data .dll(并将using MySql.Data.MySqlClient添加到需要使用这些类的每个cs文件的顶部)
答案 1 :(得分:0)
它没有崩溃,因为你在try-catch块中打开连接,所以程序认为你正在处理异常。如果你想让它崩溃,摆脱try-catch块。 (这将是一个糟糕的用户体验。)
或者,在尝试捕获之后,您可以检查连接是否有效,然后执行某些操作(如果不是)。
if ((connection == null) || (connection.State != ConnectionState.Open)) {
/* do something here to indicate to the user there was an issue.
}