Подключение к серверу MySQL через C #

0

Это мой код, предназначенный для подключения к серверу 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)

Я дважды проверял учетные данные, которые я использую. Есть ли проблема в моем коде или проблема с концом базы данных (офлайн, неадекватные разрешения и т.д.)?

Теги:

5 ответов

1
Лучший ответ

Класс SqlConnection не является базовым классом для соединения с БД; его целью является подключение к базам данных MS SQL Server. То, что вы хотите, это базовое OleDbConnection или OdbcConnection; Я бы использовал OleDb, если ваш экземпляр MySql поддерживает его.

2

Вы пытаетесь подключиться к 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 (тот же принцип применяется и для других переменных).

1

Вы не можете подключиться к SqlClient, потому что он предназначен только для SQL Server. Вам нужно установить соединитель MySQL или подключиться через ODBC.

Посмотрите здесь пример для соединителя MySQL: http://bitdaddys.com/MySQL-ConnectorNet.html

1

Вы пытаетесь подключиться к серверу MySQL с помощью драйвера Microsoft SQL Server (который предназначен только для подключения к MS SQL Server).

Загрузите и установите соединитель MySQL из здесь, docs здесь должен начать работу

0

Мне пришлось сделать это, чтобы импортировать данные с 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
                    }
               }
           }
       }
   }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню