簡體   English   中英

加載了表單,但是如何將數據從SQL提取到組合框?

[英]A form is loaded but how to extract data from SQL to combobox?

還在學習C#

創建一個comboBox並創建名為mainCat和subCat的表。

我有一個代碼,但是我仍然想了解如何將數據從mainCat獲取到comboBox,然后將其由另一個comboBox用於subCat設置子類別。

獲取連接用紅色下划線標記。 為什么?

這是我的代碼-

System.Data.SqlServerCe.SqlCeConnection con;
System.Data.SqlServerCe.SqlCeDataAdapter da;
DataSet ds1;

private void Form2_Load(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
    conn.Open();
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    using (SqlConnection Con = GetConnection())
    {
        SqlDataAdapter da = new SqlDataAdapter("Select Category.Category ,Category.Id from Category", Con);
        SqlCommand cmd = new SqlCommand("SELECT * from MAINCAT");
        DataTable dt = new DataTable();
        da.Fill(dt);
        mainCatU.DataSource = dt;
        mainCatU.DisplayMember = "Category";
        mainCatU.ValueMember = "Id";
        mainCatU.Text = "<-Please select Category->";
        myComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
    }

}

所以我然后我嘗試了另一個代碼。

public partial class User : Form
{
        System.Data.SqlServerCe.SqlCeConnection con;
        System.Data.SqlServerCe.SqlCeDataAdapter da;
        DataSet ds1;

        private void User_Load(object sender, EventArgs e)
        {
            con = new System.Data.SqlServerCe.SqlCeConnection();
            con.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Integrated Security=True";
            con.Open();
            MessageBox.Show("Database connected");
            ds1 = new DataSet();
            string sql = "SELECT * from MAINCAT";
            da = new System.Data.SqlServerCe.SqlCeDataAdapter(sql, con);
            da.Fill(ds1, "SCSID");
            mainCatU.DataSource = ds1;
            con.Close();
            mainCatU.Text = "<-Please select Category->";
            mainCatU.DropDownStyle = ComboBoxStyle.DropDownList;
            mainCatU.Enabled = true;
        }
}

然后我只是通過組合框GUI使用了數據綁定項功能。

this.mAINCATTableAdapter.Fill(this.masterDataSet.MAINCAT);

但是,該框未顯示任何值,除了comboBox中的“ System.Data.DataRowView”

================================================== ================================

System.Data.SqlServerCe.SqlCeConnection con; //not used at the moment
System.Data.SqlServerCe.SqlCeDataAdapter da; //not used at the moment
DataSet ds1;

private void User_Load(object sender, EventArgs e)
{

    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source=PEWPEWDIEPIE\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
    conn.Open();
    MessageBox.Show("Database connected");

    SqlDataAdapter da = new SqlDataAdapter("SELECT * from MAINCAT", conn);
    ds1 = new DataSet();
    da.Fill(ds1, "MainCat");
    mainCatU.DisplayMember = "maincat";
    mainCatU.ValueMember = "maincat";
    mainCatU.DataSource = ds1.Tables["MAINCAT"];

}

===============

並且組合框仍未顯示數據庫表中的任何內容

您需要創建函數GetConnection()

public string ConnectionString { get; set;}

public SqlConnection GetConnection()
{
    SqlConnection cn = new SqlConnection(ConnectionString);
    return cn;
}

TBH,除非您想在GetConnection做某事,否則最好內聯創建它:

using (SqlConnection Con = new SqlConnection(ConnectionString))
{

編輯:

根據您修改的問題,我認為現在的問題可能在這里:

mainCatU.DisplayMember = "maincat";
mainCatU.ValueMember = "maincat";
mainCatU.DataSource = ds1.Tables["MAINCAT"];

我的猜測是您的表結構不是maincat.maincat。 顯示成員和值成員應設置為要顯示的字段名稱。

我真的很抱歉我是vb開發人員,但是使用sql將數據填充到組合中的概念是相同的

聲明SQLConnection聲明SQLDataReader聲明SQLCommand

Try
    If Con.State = ConnectionState.Closed Then
        Con.Open()

    cmd.Connection = Con
    cmd.CommandText = "Select field1, field2 from table"


    dr = cmd.ExecuteReader()

    ' Fill a combo box with the datareader
    Do While dr.Read = True
        ComboBoxName.Items.Add(dr.GetString(0))
        ComboBoxName.Items.Add(dr.GetString(1))
    Loop

    Con.Close()
    End If

Catch ex As Exception
    MsgBox(ex.Message)

End Try

希望對你有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM