Jamal Charan Ответов: 1

Как добавить столбец базы данных ms-access в любую строку [] в C#


Я хочу добавить свой один из столбцов базы данных в string[] но не сделать этого. Я создал string[] с именем "Items", а также создать элемент управления с именем autocompletemenu1. теперь, когда я набираю autocompetemenu1.Предметы = столбец базы данных, то содержимое столбца базы данных, нужно заполнить строки пункта[]. Я пробовал, но это не работает, поэтому я просто упоминаю в нем какое-то имя, и оно работает, но не принимает столбец базы данных. Не знаю почему.

Это элемент метода, который я использую для сбора коллекций. способ записи-autocompleteMenu1.Items = столбец базы данных Ms Access

Что я уже пробовал:

[DefaultValue(null)]
public string [] Items
{
    get
    {
         if (sourceItems == null)
            return null;
        var list = new List<string>();
        foreach (AutocompleteItem item in sourceItems)
            list.Add(item.ToString());
        return list.ToArray();
    }
    set { SetAutocompleteItems(value); }

}
void AutocompleteText2()
{
    autocompleteMenu1.AutcompleteMOD = AutoCompleteMode.Suggest;
    autocompleteMenu1.AutocompleteSRC = AutoCompleteSource.CustomSource;
    AutoCompleteStringCollection coll2 = new AutoCompleteStringCollection();
    this.autocompleteMenu1.Font = new Font("MB SINDHI WEB", 11);
    string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;

    using (OleDbConnection con = new OleDbConnection(connString))
    {
        using (OleDbCommand cmd = new OleDbCommand("SELECT  * from userdic", con))
        {
            con.Open();
            OleDbDataReader dr = cmd.ExecuteReader();  //error this line!

            while (dr.Read())
            {

              coll2.Add(dr["Sindhiwrd2"].ToString());        // Sindhiwrd2 coloumns data load into the coll variable
            }

        }

        con.Close();
    }
          autocompleteMenu1.Items = coll2; ///Here error is generated that can not convert String[] to
                                           /// AutoCompleteStringCollection....

}

Вот string [] что я хочу соединиться с базой данных coloumn под названием " Sindhiwrd2"
this.autocompleteMenu1.Items = new string[] {
  "Jamal",
  "Javed",
  "Jameel",
  "James",
  "Jamshed",
  "abc",
  "abcd",
  "Ahmed"};

dbrenth

Вы не включили свои сообщения об ошибках.

Matt T Heffron

Во-первых, выясните, почему именно cmd.ExecuteReader () терпит неудачу. Остальные ваши трудности не имеют значения, пока это не сработает.

Matt T Heffron

Кроме того, почему Items string [], когда значения хранятся в sourceItems, который, по-видимому, является коллекцией AutoCompleteItem (который не является классом .NET, поэтому мы понятия не имеем, что это такое!)
Что делает SetAutoCompleteItems (...)? (Покажите код)

Используйте" улучшить вопрос " выше для редактирования. (Не помещайте код в "комментарии". Там очень трудно читать.)

1 Ответов

Рейтинг:
2

#realJSOP

Поместите блок try/catch в свой код, и это даст вам возможность определить, где находится ваша проблема:

OldDbConnection conn = null;
OleDbCommand cmd = null;
OleDbDataReader reader = null;
string query = "SELECT * FROM userdic";
try
{
    using (conn = new OleDbConnection(connectionstring))
    {
        conn.Open(); // you don't need to call Close() in a using block

        using (cmd = OleDbCommand(query, conn))
        {
            // I know this is the default value, but you can never be too safe
            cmd.CommandType = CommandType.Text;

            reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                // ... do something ...
            }
        }
    }
} // put a breakpoint here in case an exception is NOT thrown.
catch (Exception ex)
{
} // <<< put your breakpoint here

В этот момент Вы можете проверить строку подключения, объект подключения, объект команды и объект считывателя при достижении точки останова.

FWIW, было бы полезно придумать статический класс, который содержит все ваши OleDB... вызовы. У меня есть по одному для Sql и Access, и если у меня когда-нибудь возникнет потребность в OleDB, то написать его будет несложно. Преимущество этого заключается в том, что мой внешний доступ к базе данных всегда одинаков, запросы всегда возвращают объект DataSet, и все, что мне действительно нужно сделать, это использовать класс, соответствующий типу базы данных, к которой я обращаюсь.


ridoy

а 5.