Рейтинг:
2
codejet
Попробуйте включить MutipleActiveResultSet в строке подключения добавьте это
MultipleActiveResultSets=True
Xion1624
Суб ConTempOpen()
ConTemp.ConnectionString = "server=" & My.Settings.Хозяин &ампер; "; идентификатор пользователя=" & моя.Параметры.Пользователей &ампер; "; пароль=" & моя.Параметры.Пройти &ампер; "; базы данных= " & моя.Параметры.имя_бд
Попробуй
Контемп.Открыть()
Поймать ex как исключение
С помощью MsgBox(исх.Сообщение &амп; vbNewLine &ампер; "проверить подключение.", MsgBoxStyle.Критично, "не удается подключиться к базе данных")
Приложение.Выход()
Конец Попытки
Конец Подводной Лодки
Подгруппы, Содержащие Вредоносные Элементы()
Коннектикут.ConnectionString = "server=" & My.Settings.Хозяин &ампер; "; идентификатор пользователя=" & моя.Параметры.Пользователей &ампер; "; пароль=" & моя.Параметры.Пройти &ампер; "; базы данных= " & моя.Параметры.имя_бд
Попробуй
Конн.Открыт()
Поймать ex как исключение
С помощью MsgBox(исх.Сообщение &амп; vbNewLine &ампер; "проверить подключение." &ампер; vbNewLine &ампер; "приложение будет закрыто.", MsgBoxStyle.Критично, "не удается подключиться к базе данных")
Приложение.Выход()
Конец Попытки
Конец Подводной Лодки
(куда мне это добавить???)
codejet
Суб ConTempOpen()
ConTemp.ConnectionString = "server=" & My.Settings.Хозяин &ампер; "; идентификатор пользователя=" & моя.Параметры.Пользователей &ампер; "; пароль=" & моя.Параметры.Пройти &ампер; "; базы данных= " & моя.Параметры.имя_бд &ампер; ";значение multipleactiveresultsets=true в"
- Его можно добавить в любом месте строки соединения
Рейтинг:
1
OriginalGriff
SqlConnection может поддерживать только один DataReader одновременно: когда вы "делитесь" соединением, вы должны убедиться, что читатель закрыт и удален, когда вы закончите с ним в любое время.
Лучший подход-это не "утилизировать" SQL-соединения: создать его в блоке Using, открыть, использовать и позволить системе утилизировать его, когда он выходит за пределы области действия.
Я говорил тебе это три дня назад!
Просмотрите весь свой код и удалите "общее" SqlConnection - замените его отдельными, созданными внутри блоков, когда они вам понадобятся.
И ваш цикл все еще странный: почему вы закрываете считыватель в конце первой итерации?
Цитата:
должен ли я поместить свойство соединения внутрь с помощью блока или есть способ поместить свойство в класс соединения и соединить его с новым соединением внутри с помощью блока ??????
Пожалуйста, больше не используйте несколько вопросительных знаков в общении со мной: по словам птерри, это "признак больного ума" - и он прав.
Вы можете использовать класс для инкапсуляции соединения - если это необходимо - и поместить код конструкции в блок using:
using (MyConnection con = MyConnection.GetConnection())
{
Console.WriteLine("Created");
...
}
...
internal class MyConnection : IDisposable
{
private MyConnection() { }
public static MyConnection GetConnection()
{
return new MyConnection();
}
#region IDisposable Support
private bool disposedValue = false; // To detect redundant calls
protected virtual void Dispose(bool disposing)
{
Console.WriteLine("Disposing");
...
}
public void Dispose()
{
// Do not change this code. Put cleanup code in Dispose(bool disposing) above.
Dispose(true);
// TODO: uncomment the following line if the finalizer is overridden above.
// GC.SuppressFinalize(this);
}
}
И система автоматически отбросит его, когда он выйдет за рамки.
Извините, забыл, что вы используете VB.
Using con As MyConnection = MyConnection.GetConnection()
Console.WriteLine("Created")
End Using
...
Friend Class MyConnection
Inherits IDisposable
Private Sub New()
End Sub
Public Shared Function GetConnection() As MyConnection
Return New MyConnection()
End Function
Private disposedValue As Boolean = False
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
Console.WriteLine("Disposing")
...
End Sub
Public Sub Dispose()
Dispose(True)
End Sub
End Class
Xion1624
должен ли я поместить свойство соединения внутрь с помощью блока или есть способ поместить свойство в класс соединения и соединить его с новым соединением внутри с помощью блока ??????
ZurdoDev
VB не имеет того типа использования, о котором он говорит.
Как я уже сказал в своем решении, вы должны удалить код закрытия из своего цикла.
Xion1624
уже сделал что братан все та же ошибка
OriginalGriff
Хм... вы уверены:
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/using-statement
Xion1624
извините за несколько вопросительных знаков
ZurdoDev
Эти вонючки. Когда это они его туда протащили? Я явно устарел с моим синтаксисом VB. :(
OriginalGriff
.NET 2.0, в 2005 году ... :смеяться:
Xion1624
это тот же код и для модуля тоже??
Dave Kreskowiak
Ммм... да, это так.
ZurdoDev
Да, кто-то уже указал на это. Ты проиграл. :)
Xion1624
Система Импорта.Безопасность.Криптография
Система Импорта.ИО
Импорт Базы Данных MySQL.Данных.MySqlClient
Модуль Con_Add
Общественные usrnameFriend как строку
Public Conn As New MySqlConnection
Публичное Презрение Как Новый MySqlConnection
Public MsgSubject As String = String.Пустой
Суб ConTempOpen()
ConTemp.ConnectionString = "server=" & My.Settings.Хозяин &ампер; "; идентификатор пользователя=" & моя.Параметры.Пользователей &ампер; "; пароль=" & моя.Параметры.Пройти &ампер; "; базы данных= " & моя.Параметры.имя_бд
Попробуй
Контемп.Открыть()
Поймать ex как исключение
С помощью MsgBox(исх.Сообщение &амп; vbNewLine &ампер; "проверить подключение.", MsgBoxStyle.Критично, "не удается подключиться к базе данных")
Приложение.Выход()
Конец Попытки
Конец Подводной Лодки
Подгруппы, Содержащие Вредоносные Элементы()
Коннектикут.ConnectionString = "server=" & My.Settings.Хозяин &ампер; "; идентификатор пользователя=" & моя.Параметры.Пользователей &ампер; "; пароль=" & моя.Параметры.Пройти &ампер; "; базы данных= " & моя.Параметры.имя_бд
Попробуй
Конн.Открыт()
Поймать ex как исключение
С помощью MsgBox(исх.Сообщение &амп; vbNewLine &ампер; "проверить подключение." &ампер; vbNewLine &ампер; "приложение будет закрыто.", MsgBoxStyle.Критично, "не удается подключиться к базе данных")
Приложение.Выход()
Конец Попытки
Конец Подводной Лодки
Функция MD5Encrypter(ByVal strPass As String) As String
Dim Hasher Как Новый MD5CryptoServiceProvider
Dim PasswordBytes As Byte() = новый байт(strPass.Длина + 3) {}
Dim HashBytes Как Байт()
Для i As Integer = 0 To strPass.Длина - 1
PasswordBytes(i) = CByte(Asc(strPass(i)))
Следующий
PasswordBytes(strPass.Длина) = CByte(90)
PasswordBytes(strPass.Длина + 1) = CByte(85)
PasswordBytes(strPass.Длина + 2) = CByte(66)
PasswordBytes(strPass.Длина + 3) = CByte(73)
HashBytes = Хешер.Метода Computehash(PasswordBytes)
Dim NewHashBytes As Byte() = Новый Байт(HashBytes.Длина + 3) {}
Для J как integer = 0 в функцию hashbytes.Длина - 1
newhashBytes(j) = hashBytes(j)
Следующий
newhashBytes(функцию hashbytes.Длина) = CByte(90)
newhashBytes(функцию hashbytes.Длина + 1) = CByte(85)
newhashBytes(функцию hashbytes.Длина + 2) = CByte(66)
newhashBytes(функцию hashbytes.Длина + 3) = CByte(73)
strPass = конвертировать.ToBase64String(newhashBytes)
Возврат strPass
Конечная Функция
Функция ImageToBytes(ByVal imgPath As String) As String
Попробуй
Dim Image_DP As Image = Изображение.FromFile(imgPath)
Тусклые Воспоминания Как Поток Памяти = Новый Поток Памяти()
Image_DP.Сохранить(Накопители, Системы.Рисование.Изображений.ImageFormat.Png)
Dim ImageBytes As Byte() = Memories.Метод toArray()
Dim StringImage As String = Convert.ToBase64String(ImageBytes)
Вернуться StringImage
Поймать ex как исключение
MsgBox(ex.Message & vbNewLine & "не удалось преобразовать изображение в байты.", MsgBoxStyle.Критично, "Произошла Ошибка")
Конец Попытки
Конечная Функция
Конечный Модуль
(это мой модуль подключения)
Dave Kreskowiak
Ты все еще делаешь то, что я сказал тебе не делать 4 дня назад.
Видите эту строку "Public ConTemp As New MySqlConnection" в верхней части вашего кода? НЕ ДЕЛАЙ ЭТОГО! Вот почему у вас есть проблема, которую вы не можете решить.
Всегда создавайте объект подключения там, где он вам нужен, а не глобально в модуле или классе.
..и еще кое-что, чего вы не понимаете, это то, что MD5-это не шифрование. Это криптографический хэш. Шифрование может быть отменено, чтобы вернуть исходный контент. Хэши не могут быть отменены.