1
DataTable _dt = new DataTable();

using (SqlConnection _cs = new SqlConnection("Data Source=COMNAME; Initial Catalog=DATABASE; Integrated Security=True"))
{
    string _query = "SELECT * FROM Doctor";
    SqlCommand _cmd = new SqlCommand(_query, _cs);

    using (SqlDataAdapter _da = new SqlDataAdapter(_cmd))
    {
        _da.Fill(_dt);
    }
}
cbDoctor.DataSource = _dt;
foreach(DataRow _dr in _dt.Rows)
{
    cbDoctor.Items.Add(_dr["name"].ToString());
}

エラーが発生しました...

結果はSystem.Data.DataRowViewデー​​タベースからのデータの代わりになります。

4

3 に答える 3

6

コードの正確なエラーはまだわかりませんが、を使用しなくても問題がないDataTable場合は、次の方法で実行できます。

using (SqlConnection sqlConnection = new SqlConnection("connstring"))
{
    SqlCommand sqlCmd = new SqlCommand("SELECT * FROM Doctor", sqlConnection);
    sqlConnection.Open();
    SqlDataReader sqlReader = sqlCmd.ExecuteReader();

    while (sqlReader.Read())
    {
        cbDoctor.Items.Add(sqlReader["name"].ToString());
    }

    sqlReader.Close();
}

詳細については、MSDNのSqlDataReaderリファレンスを参照してください

投稿した元のコードで問題を見つけるために、例外が発生した行(または、アプリケーションのコンパイルを妨げるエラーですか?)とそのメッセージ全体についての情報を提供してください。

于 2012-10-15T16:59:25.040 に答える
2

コンボボックスのDisplayMemberプロパティを任意の列名に指定することもできます。たとえば、[名前]フィールドを表示する場合は、次のように実行できます。

Combobox1.DisplayMember="Name";
于 2012-10-15T17:04:12.247 に答える
0

問題は、comboBox(1つの列のみを受け入れることができる)に複数の列を挿入しようとしていることだと思います。SELECTステートメントを調整して、必要なすべてのデータを1つの列に結合します。

例:

SELECT Name + ' ' LastName + ' '+ ID AS 'DoctorData' FROM Doctor

+演算子を使用すると、データベースの複数の列を組み合わせて、単一のデータとして表すことができます。その後、コードは機能するはずです(foreachループにコメントすることもできます。コンボボックスにデータソースを追加するだけで十分だと思います)

于 2012-10-15T16:48:43.183 に答える