Это мой код, предназначенный для подключения к серверу MySQL и получения информации:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
namespace test_MLDropCopy
{
class Program
{
static void Main(string[] args)
{
string connectionString = "server=xxxxx;uid=xxxxx;pwd=xxxxx";
SqlConnection mySqlConnection = new SqlConnection(connectionString);
string selectString = "select Symbol from today_positions.all_rttp where ServiceName like 'ML%' and ID = 137800";
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlConnection.Open();
mySqlCommand.CommandText = selectString;
SqlDataReader myReader = null;
myReader = mySqlCommand.ExecuteReader();
string Symbol = myReader["Symbol"].ToString();
Console.WriteLine(Symbol);
mySqlConnection.Close();
}
}
}
Однако это ошибка, которую я получаю:
Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or in
stance-specific error occurred while establishing a connection to SQL Server. Th
e server was not found or was not accessible. Verify that the instance name is c
orrect and that SQL Server is configured to allow remote connections. (provider:
Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Я дважды проверял учетные данные, которые я использую. Есть ли проблема в моем коде или проблема с концом базы данных (офлайн, неадекватные разрешения и т.д.)?
Класс SqlConnection не является базовым классом для соединения с БД; его целью является подключение к базам данных MS SQL Server. То, что вы хотите, это базовое OleDbConnection или OdbcConnection; Я бы использовал OleDb, если ваш экземпляр MySql поддерживает его.
Вы пытаетесь подключиться к Microsoft SQL Server.
Вместо этого используйте Коннектор/Сеть. Например. из интро-учебника
string connStr = "server=localhost;user=root;database=world;port=3306;password=******;";
MySqlConnection conn = new MySqlConnection(connStr);
Обратите внимание, что поскольку MySQL и SQL Server реализуют интерфейсы ADO.NET, вы можете поместить IDbConnection
в качестве типа conn
(тот же принцип применяется и для других переменных).
Вы не можете подключиться к SqlClient, потому что он предназначен только для SQL Server. Вам нужно установить соединитель MySQL или подключиться через ODBC.
Посмотрите здесь пример для соединителя MySQL: http://bitdaddys.com/MySQL-ConnectorNet.html
Мне пришлось сделать это, чтобы импортировать данные с SQL Server на MySql. Соответствующий код для подключения MySql (с правами root) и обработки данных:
using MySql.Data.MySqlClient;
using MySql.Data.Types;
// snip
string sourceString = "Server=127.0.0.1;Uid=root;Pwd=password;Database=dbname;";
string[] tables = { "Table1", "Table2"};
using (MySqlConnection source = new MySqlConnection(sourceString))
{
source.Open();
foreach (string table in tables)
{
using (MySqlCommand readCommand = new MySqlCommand("select * from " + table, source))
{
using (MySqlDataReader reader = readCommand.ExecuteReader())
{
while (reader.Read())
{
// do work here
}
}
}
}
}