Подключение к серверу MySQL через C # - PullRequest
0 голосов
/ 28 сентября 2010

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

2 голосов
/ 28 сентября 2010

Вы пытаетесь подключиться к Microsoft SQL Server.

Вместо этого используйте документацию Connector / Net .Например, из вводного руководства

string connStr = "server=localhost;user=root;database=world;port=3306;password=******;";
MySqlConnection conn = new MySqlConnection(connStr);

Обратите внимание, что, поскольку MySQL и SQL Server реализуют интерфейсы ADO.NET, вы можете указать IDbConnection в качестве типаиз conn (тот же принцип применяется для других переменных).

1 голос
/ 28 сентября 2010

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

1 голос
/ 28 сентября 2010

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

Здесь приведен пример для коннектора MySQL: http://bitdaddys.com/MySQL-ConnectorNet.html

1 голос
/ 28 сентября 2010

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

Загрузите и установите MySQL Connector с здесь , документы здесь должны помочь вам начать

0 голосов
/ 28 сентября 2010

Мне пришлось сделать это, чтобы импортировать данные из 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
                    }
               }
           }
       }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...