У меня есть локальный сервер Wampserver под управлением MySQL. Я успешно подключился к нему через PHP:
<?php
$servername = "localhost";
$username = "pyramid";
$password = "pyramid";
try {
$conn = new PDO("mysql:host=$servername;dbname=test", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
Это работает отлично, и я получаю результат «Успешно подключен».
Однако, когда я пытаюсь сделать то же самое в vb.net с этим кодом:
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim ConnectionString As String
Dim SQLCon As SqlConnection
ConnectionString = "Server=localhost;Database=test;Uid=pyramid;Pwd=pyramid"SQLCon = New SqlConnection(ConnectionString)
Try
SQLCon.Open()
Catch ex As Exception
If ex.InnerException IsNot Nothing Then
MessageBox.Show(ex.InnerException.Message)
Else
MessageBox.Show(ex.Message)
End If
Finally
If SQLCon.State = ConnectionState.Open Then SQLCon.Close()
End Try
End Sub
End Class
После долгого ожидания от 5 до 10 секунд я получаю «Система не может найти указанный файл»
Оба имеют одно и то же имя пользователя, сервер паролей и имя базы данных, но vb.NET отказывается подключаться.
Я перепробовал почти все, что мог придумать, и исчерпал свои возможности. Можете ли вы пролить свет?
Вам необходимо скачать коннектор MySQL для .NET Framework (http://dev.mysql.com/downloads/connector/net/), затем обратитесь к .DLL в вашем проекте.
Imports MySqL.Data.MySqlClient
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim ConnectionString As String
Dim SQLCon As MySqlConnection
ConnectionString = "Server=localhost;Database=test;Uid=pyramid;Pwd=pyramid"SQLCon = New MySqlConnection(ConnectionString)
Try
SQLCon.Open()
Catch ex As Exception
If ex.InnerException IsNot Nothing Then
MessageBox.Show(ex.InnerException.Message)
Else
MessageBox.Show(ex.Message)
End If
Finally
If SQLCon.State = ConnectionState.Open Then SQLCon.Close()
End Try
End Sub
End Class
Других решений пока нет …