Страница удаленного входа в систему SQL C # - PullRequest
0 голосов
/ 10 июня 2010

Эй, я пытаюсь создать страницу входа, которая проверяет имя пользователя и пароль с базой данных на сервере.Сервер расположен в другой стране.

Это код, который у меня есть:

    #region Building the connection string

            string Server = "XX.XXX.XX.XX, XXXX";
            string Username = "_Username_";
            string Password = "_Password_";
            string Database = "_Database_";

            string ConnectionString = "Data Source=" + Server + ";";
            ConnectionString += "User ID=" + Username + ";";
            ConnectionString += "Password=" + Password + ";";
            ConnectionString += "Initial Catalog=" + Database;

            #endregion

            SqlConnection SQLConnection = new SqlConnection();

            try
            {
            SQLConnection.ConnectionString = ConnectionString;
            SQLConnection.Open();
 
            // You can get the server version 
            // SQLConnection.ServerVersion
            }

            catch (Exception Ex)
            {
            // Try to close the connection
            if (SQLConnection != null)
                SQLConnection.Dispose();
 
            // Create a (useful) error message
            string ErrorMessage = "A error occurred while trying to connect to the server.";
            ErrorMessage += Environment.NewLine;
            ErrorMessage += Environment.NewLine;
            ErrorMessage += Ex.Message;
 
            // Show error message (this = the parent Form object)
            MessageBox.Show(this, ErrorMessage, "Connection error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
            // Stop here
            return;
}

Я получаю сообщение об ошибке:

Non-отрицательный номер требуется.Имя параметра: count

Я принял подстановочные знаки на своем сервере и не знаю, что означает эта ошибка?Любая помощь будет оценена,

Спасибо.

Ответы [ 5 ]

1 голос
/ 10 июня 2010

Вам необходимо поместить кавычки вокруг имени сервера в строку подключения.

Однако вместо этого вы должны использовать SqlConnectionStringBuilder, например:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

builder.DataSource = Server;
builder.UserID = Username;
builder.Password = Password;
builder.InitialCatalog = Database;


SqlConnection SQLConnection = new SqlConnection(builder.ToString());
try {
    SQLConnection.Open();
    ...
} finally {
    SQLConnection.Close();        
}

Кроме того, вы должны закрыть соединение в блоке finally.

0 голосов
/ 17 декабря 2011

У меня та же проблема, ни одно из предложений, которые я мог найти в Интернете, похоже, не работает.

На моем ноутбуке (Win7) я мог бы установить MySQL Connector, просто добавив ссылку в Visual Studio и добавив «using MySql.Data.Client;» или что-то поверх кода. Теперь я попытался сделать то же самое на своем рабочем столе (WinXP), и ничего не отображается в списке литературы. Пройдя некоторое время в поиске, я нахожу неясную ссылку на новую бета-версию коннектора MySQL, который, похоже, устанавливается на C #. Вам больше не нужно добавлять ссылку, вы можете просто использовать «using System.Data.SqlClient;».

Когда я использую это и все настраиваю правильно, это все еще дает мне эту ошибку. Глядя в Wireshark, все пакеты не читаются, за исключением одной строки в предпоследней строке: «пакеты вышли из строя». Я подозреваю, что клиент MySQL несовместим с моей версией сервера MySQL. В конце концов, установленная версия клиента была бета, и мой MySQL-сервер не самый последний. Я не собираюсь пробовать эту теорию, хотя, после нескольких часов попыток, я, скорее, похож на нее - черт возьми, я просто использую свой ноутбук.

Извините, что этот ответ не исправит его, но я публикую его в надежде, что смогу указать кому-то в правильном направлении.

0 голосов
/ 10 июня 2010

почему в вашем коде доступа к данным есть messagebox.show?

Это действительно плохая практика, чувак.

мм действительные строки подключения можно найти здесь

http://www.connectionstrings.com/

также используйте компоновщик строки подключения http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

Я предполагаю, что ваша строка подключения недопустима, и поэтому она не может подсчитать свои параметры ... но я действительно предполагаю, что там.

Строка подключения не изменится, поэтому id поместите ее в app.config ro web.config

также, если вы добавите источник данных, он создаст строку подключения и добавит элемент в ваш файл web.config.

0 голосов
/ 10 июня 2010

лучший вариант пользователя SqlConnectionStringBuilder в соответствии с предложением SLaks

или

поместить строку подключения в файл app.config

или

попробуйте завершить строку подключения точкой с запятой (;) - это просто дикая догадка

  string ConnectionString = "Data Source=" + Server + ";";
  ConnectionString += "User ID=" + Username + ";";
  ConnectionString += "Password=" + Password + ";";
  ConnectionString += "Initial Catalog=" + Database + ";";

PS: - Обращайте внимание на то, что Джон Николас говорит о MessageBox в коде доступа к данным.Если вы новичок, постарайтесь на раннем этапе разработать хорошие методы кодирования.Это очень поможет вам, когда вы закончите писать более сложные приложения.

0 голосов
/ 10 июня 2010

попробуйте сначала использовать реальную строку подключения - это проверяется на БД с SSMS, затем создайте свою собственную. если первый работает, второй должен работать (убедитесь, что они идентичны)

никогда не объединял ввод от клиента в оператор SQL (я знаю, что это строка подключения ... но это плохая идея использовать ввод, не проверяя его на наличие недопустимых символов / инъекций, так что дальше в коде - убедитесь, что вы не не делай этого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...