Данный ключ отсутствует в словаре в vb.net - PullRequest
0 голосов
/ 11 апреля 2011

Я получаю эту ошибку в vb.net, когда пытаюсь подключиться к базе данных mysql:

An error occurred creating the form. See Exception.InnerException for details.  The error is: The given key was not present in the dictionary.

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

 Dim FILE_NAME As String = "D:\connection.txt"

    Dim objReader As New StreamReader(FILE_NAME)


    Public Sub textfileopener()
        host = objReader.ReadLine
        user = objReader.ReadLine
        password = objReader.ReadLine
        database = objReader.ReadLine

        objReader.Close()
    End Sub

Затем присваиваем его этим переменным:

Public host 
Public database  
Public user  
Public password

Затем, наконец, я подключаюсь к базе данных:

Dim con As New MySqlConnection("Server=" + host + ";Database=" + database + ";Uid=" + user + ";Pwd=" + password + ";")

Я думаю, что она не получает никаких значений,Потому что, если я сразу назначу значения, я могу без проблем подключиться:

    Public host = "localhost"
    Public database = "db"
    Public user = "root"
    Public password = "pw

Но если я сделаю это таким образом, то все будет постоянным.И я не могу ничего изменить вообще.Моя проблема заключается в получении правильных значений в строке подключения.Как мне это сделать?

Обновление

System.InvalidOperationException was unhandled
  Message="An error occurred creating the form. See Exception.InnerException for details.  The error is: The given key was not present in the dictionary."
  Source="QueryGenerator"
  StackTrace:
       at QueryGenerator.My.MyProject.MyForms.Create__Instance__[T](T Instance) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 190
       at QueryGenerator.My.MyProject.MyForms.get_Form1()
       at QueryGenerator.My.MyApplication.OnCreateMainForm() in C:\Users\Nrew\Documents\Visual Studio 2008\Projects\QueryGenerator\QueryGenerator\My Project\Application.Designer.vb:line 35
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at QueryGenerator.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Collections.Generic.KeyNotFoundException
       Message="The given key was not present in the dictionary."
       Source="mscorlib"
       StackTrace:
            at System.ThrowHelper.ThrowKeyNotFoundException()
            at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
            at MySql.Data.MySqlClient.MySqlConnectionStringBuilder.get_UserID()
            at MySql.Data.MySqlClient.NativeDriver.Authenticate()
            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 QueryGenerator.connection..ctor() in C:\Users\Nrew\Documents\Visual Studio 2008\Projects\QueryGenerator\QueryGenerator\connection.vb:line 22
            at QueryGenerator.Form1..ctor() in C:\Users\Nrew\Documents\Visual Studio 2008\Projects\QueryGenerator\QueryGenerator\Form1.vb:line 5
       InnerException:

1 Ответ

0 голосов
/ 12 апреля 2011

Ошибка исходит от клиента MySQL.Похоже, что вы ожидаете, что вы предоставите конкретный параметр в строке подключения, что вы не являетесь.Хотя я недостаточно знаком с управляемым драйвером MySQL, чтобы сказать вам, чего не хватает, тот факт, что что-то отсутствует , довольно ясен.

Возможно, вы захотите попробовать добавить пробел междуточка с запятой, которая сигнализирует об окончании одного параметра и имени следующего параметра.Как это:

Dim con As New MySqlConnection("Server=" + host + "; Database=" + database + "; Uid=" + user + "; Pwd=" + password + ";")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...