SrinivasEng Ответов: 1

Как решить исключение "чтение из потока не удалось"


Дорогие Все,

Я занимаюсь разработкой приложения ASP.NET и с использованием инструментальных средств СУБД MySQL в качестве базы данных.
Я загрузил свою базу данных на сервер(Cpanel), пытаясь подключиться и в момент подключения.Open(), он выбрасывает следующее исключение, пожалуйста, помогите мне. Я-новая пчела.
мой код:

Dim connection As New MySqlConnection
            connection.ConnectionString = Server="IP of My CPANEL"; Port = portNumber; Database=xxxxx; Uid=<username>; Pwd=<password>;


Dim adap As New MySqlDataAdapter("SELECT * FROM reg_employs WHERE EmpID = '" & TextBoxID.Text.Trim & "' AND EmpPass = md5('" & TextBoxPass.Text.Trim & "')", connection)
           Dim dt As New DataTable()
           adap.Fill(dt)
           If dt.Rows.Count > 0 Then
               Session("EmpID") = dt.Rows(0).Item("EmpID").ToString
               Server.Transfer("Main.aspx", True)
           Else
               Label1.Text = "Invalid Credentials, Please Try again"
           End If



MySql.Data.MySqlClient.MySqlException was caught
  ErrorCode=-2147467259
  HResult=-2147467259
  Message=Reading from the stream has failed.
  Number=0
  Source=MySql.Data
  StackTrace:
       at MySql.Data.MySqlClient.MySqlStream.LoadPacket()
       at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
       at MySql.Data.MySqlClient.NativeDriver.Open()
       at MySql.Data.MySqlClient.Driver.Open()
       at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
       at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
       at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
       at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
       at MySql.Data.MySqlClient.MySqlPool.GetConnection()
       at MySql.Data.MySqlClient.MySqlConnection.Open()
       at ERP.Login.ButtonLogin_Click(Object sender, EventArgs e) in D:\Srinivas\Dot Net\ASP\vs2010\ERP\ERP\Login.aspx.vb:line 13
  InnerException: System.IO.EndOfStreamException
       HResult=-2147024858
       Message=Attempted to read past the end of the stream.
       Source=MySql.Data
       StackTrace:
            at MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
            at MySql.Data.MySqlClient.MySqlStream.LoadPacket()
       InnerException:

Afzaal Ahmad Zeeshan

Никогда не делитесь своим паролем или именем пользователя в Интернете.

CHill60

Не объединяйте строки для построения инструкции sql - используйте параметризованные запросы, чтобы избежать этого SQL-инъекция[^]
Не размещайте свой логин и пароль на общедоступных сайтах.
Ваша строка подключения выглядит неправильно.
Это похоже на ошибку в некоторых версиях MySQL - проверьте, есть ли у вас последняя версия и какие-либо патчи.
Возможно, время ожидания соединения истекло - попробуйте проверить наличие открытого соединения перед запуском запроса

Richard MacCutchan

Каково точное содержание строки подключения при запуске приложения? То, что вы показали выше, даже не будет компилироваться.

1 Ответов

Рейтинг:
0

Patrice T

Dim adap As New MySqlDataAdapter("SELECT * FROM reg_employs WHERE EmpID = '" & TextBoxID.Text.Trim & "' AND EmpPass = md5('" & TextBoxPass.Text.Trim & "')", connection)

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Richard Deeming

Хорошая точка. Но учитывая, что прошло уже почти четыре года с момента публикации вопроса, эта база данных почти наверняка уже уничтожена. :)

(Вопрос был воскрешен решением № 1, опубликованным вчера, и с тех пор удален.)

Patrice T

Ой