none
請問要如何使用comboBox 顯示 SQL 資料表 裡面的 資料 RRS feed

  • 問題

  • 小弟想做個  comboBox 下拉選單  來選著  SQL 裡面的資料表  例如

    資料表裡有 可樂 紅茶  選到可樂  就會跳出有多少錢  請問有什麼辦法

    2011年6月22日 上午 04:55

解答

  • 您好

    1. 是否能先說明您目前的資料來源,資料繫結等等相關程式是怎麼寫的? 請提供多一點資訊給網友,將有助您得到解答

    2. 假如您有使用 DataTable,使用 DataTable.Select, DataView.RowFilter, LINQ 等方式過濾您的資料,再重新繫結到您的 DataGridView

    http://msdn.microsoft.com/zh-tw/library/system.data.dataview.rowfilter(v=vs.80).aspx

    http://msdn.microsoft.com/zh-tw/library/system.data.datatable.select(v=vs.80).aspx

     


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 vigi588 2011年6月22日 上午 06:42
    2011年6月22日 上午 05:34
    版主
  • To Vigi:

    (1) 你的SQL Server有使用具名執行個體嗎 ? 程式執行的過程有出錯嗎 ?

    (2) Combobox可以用DataSource屬性來和DataTable繫結, 請參考 ComboBox.DataSource 屬性 , ListControl.DisplayMember 屬性 , ListControl.ValueMember 屬性


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 vigi588 2011年6月22日 上午 08:31
    2011年6月22日 上午 08:17
    版主
  • Hi,

    你程式未清除就一直加元素進去~自然有這效果

    comboBox1.Items.Add(l_ds.Tables[0].Rows[i]["Productname"].ToString());

    可改用DataSource去繫資料看看


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 vigi588 2011年6月22日 上午 08:30
    2011年6月22日 上午 08:27
  • 因為你在 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 呼叫 calcu()吧 ?

    改在Form.Load事件委派函式中呼叫.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 vigi588 2011年6月22日 上午 08:30
    2011年6月22日 上午 08:28
    版主
  • 沒把ComboBox1的內容清掉

    一直加東西 當然會有問題


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    • 已標示為解答 vigi588 2011年6月22日 上午 08:30
    2011年6月22日 上午 08:29

所有回覆

  • 用ADO.NET存取資料庫
    • 已標示為解答 vigi588 2011年6月22日 上午 05:16
    • 已取消標示為解答 vigi588 2011年6月22日 上午 05:16
    • 已取消標示為解答 小朱MVP, Moderator 2011年6月22日 上午 06:45
    2011年6月22日 上午 05:02
  • 請問您有   範例或是  連結的  網業 作法  可以參考麻
    2011年6月22日 上午 05:17
  • 您好

    1. 是否能先說明您目前的資料來源,資料繫結等等相關程式是怎麼寫的? 請提供多一點資訊給網友,將有助您得到解答

    2. 假如您有使用 DataTable,使用 DataTable.Select, DataView.RowFilter, LINQ 等方式過濾您的資料,再重新繫結到您的 DataGridView

    http://msdn.microsoft.com/zh-tw/library/system.data.dataview.rowfilter(v=vs.80).aspx

    http://msdn.microsoft.com/zh-tw/library/system.data.datatable.select(v=vs.80).aspx

     


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 vigi588 2011年6月22日 上午 06:42
    2011年6月22日 上午 05:34
    版主
  • 有這麼複雜嗎?

    用 ADO.NET 取得資料來源

    將資料來源跟控制項Binding在一起

    設定控制項所要呈現哪個Table的哪個欄位,唯一識別值式哪個欄位

    選寫選單的選擇事件,在事件裡抓出你選的是哪個Item,把Item裡要呈現的欄位取出來就好了

    2011年6月22日 上午 06:13
  • 你的問題已經問了很多次了

    Data應用程式說簡單不簡單,說難也不難
    但要用討論區這種方式教到會,不回文個幾十次可能都是霧裡看花

    不管你是寫WindowsForm,WPF,ASP.NET....技術文件裡絕對有一章叫Data.請你把這一章看一遍,Sample 做一遍

    我不能保證你會

    但我相信你以後發文會更具體,且其他的高手也能馬上教你怎麼做

    而不是我要寫程式,你們教我做這麼攏桶的問題

    2011年6月22日 上午 06:27
  • 不好意思呀

    感謝您的回覆了

    2011年6月22日 上午 06:34
  • To vigi:

    其實MSDN文件庫對於ADO.NET是有很詳細說明的.

    我在你的另一個發問 http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/d10603bc-9aaa-4c80-bd16-441585b0b9ea

    有一個ADO.NET的Link, 真的值得花時間去讀去研究的. 我給你的建議就是好好利用那份文件把ADO.NET弄清楚, 會對你非常有幫助的.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2011年6月22日 上午 07:22
    版主
  • 不好意思
    我這樣寫 還是 讀不到耶 請問哪裡錯了??
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                SqlConnection l = new SqlConnection();
                l.ConnectionString = "Data Source=.;Initial Catalog=dbrcm;Integrated Security=True";
                l.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = l;
                cmd.CommandText = "SELECT FROM Product WHERE  Productname = '" + comboBox1.Text + "'";
                cmd.ExecuteNonQuery();
                l.Close();
               
            }
    2011年6月22日 上午 07:36
  • 恭喜 方向快對了

    你看comboBox1.Text 有沒有一些空白字元

     

     

    2011年6月22日 上午 07:44
  •  cmd.CommandText = "SELECT Productname FROM Product='" + comboBox1.Text + "'";

     

    我這串是  comboBox 裡面的 內容 去 查找   Product 資料庫  可是我要的事  Product 資料庫

    裡面Productname 資料表  的內容  跑進    comboBox1

    好像這串  有點寫錯

    2011年6月22日 上午 07:49
  • cmd.ExecuteNonQuery();是錯的

    cmd.ExecuteQuery();才是對的

    新查修刪是對資料庫的基本操作

    查 SELECT 要用cmd.ExecuteQuery();

    新增,修改,刪除 才用cmd.ExecuteNonQuery();

    2011年6月22日 上午 07:55
  • cmd.ExecuteNonQuery();是錯的

    cmd.ExecuteQuery();才是對的

    新查修刪是對資料庫的基本操作

    查 SELECT 要用cmd.ExecuteQuery();

    新增,修改,刪除 才用cmd.ExecuteNonQuery();

    哪來的ExecuteQuery ?

    在ADO.NET中要讀取資料有幾種方式

    (1) 使用 DataAdapter.Fill , 以你的狀況是SqlClient Namespace則使用 SqlDataAdapter.Fill 方法

    (2) 是使用 SqlCommand.ExecuteReader 方法 ()

    (3) 這種比較特別, 它只能回傳單一值, SqlCommand.ExecuteScalar 方法 , 這對於讀取某一個列的單一欄位值特別有效率

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年6月22日 上午 08:03
    版主
  • cmd.ExecuteNonQuery();是錯的

    cmd.ExecuteQuery();才是對的

    新查修刪是對資料庫的基本操作

    查 SELECT 要用cmd.ExecuteQuery();

    新增,修改,刪除 才用cmd.ExecuteNonQuery();

    老大:

    ADO.NET 中沒有 ExecuteQuery 這東西吧?

    取 DataSet/DataTable 要用 DataAdapter;取 DataReader 要用 ExecuteReader;取純量值要用 ExecuteScalar;執行指令才是 ExecuteNonQuery,從頭到尾沒有 ExecuteQuery 這東西...


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    2011年6月22日 上午 08:04
    版主
  • 哈囉

    我改成這樣 還是沒有耶

    private void calcu()

            {

     

     

                SqlConnection l_conn = new SqlConnection();

                l_conn.ConnectionString = @"Data Source=.;Initial Catalog=dbrcm;Integrated Security=True";

                l_conn.Open();

     

                string l_strSql = "SELECT Productname FROM Product '";

     

                SqlDataAdapter l_adapter = new SqlDataAdapter(

                   l_strSql, l_conn);

     

                DataSet l_ds = new DataSet();

                l_adapter.Fill(l_ds);

     

     

                comboBox1.Items.Add(l_ds.Tables[0].Rows[0]["Productname"].ToString());

     

                l_conn.Close();

     

     

            }

     

            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

            {

     

                calcu();

                            }

    2011年6月22日 上午 08:05
  • Sorry

    用到我們老闆寫的Framework 了

     

    2011年6月22日 上午 08:12
  • ok已經寫出來了

    感恩

    2011年6月22日 上午 08:17
  • To Vigi:

    (1) 你的SQL Server有使用具名執行個體嗎 ? 程式執行的過程有出錯嗎 ?

    (2) Combobox可以用DataSource屬性來和DataTable繫結, 請參考 ComboBox.DataSource 屬性 , ListControl.DisplayMember 屬性 , ListControl.ValueMember 屬性


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 vigi588 2011年6月22日 上午 08:31
    2011年6月22日 上午 08:17
    版主
  • 糟糕又遇新問題了

     

    每執行一次程式 他都會  一直 重新載入

    搞到我有  兩項 一樣的商品 可以幫我看下哪裡有錯嗎ˊ

      SqlConnection l_conn = new SqlConnection();

                l_conn.ConnectionString = @"Data Source=.;Initial Catalog=dbrcm;Integrated Security=True";

                l_conn.Open();

     

                string l_strSql = "SELECT Productname FROM Product ";

     

                SqlDataAdapter l_adapter = new SqlDataAdapter(

                   l_strSql, l_conn);

     

                DataSet l_ds = new DataSet();

                l_adapter.Fill(l_ds);

                for (int i = 0; i < l_ds.Tables[0].Rows.Count;i++ )

                {

     

                    comboBox1.Items.Add(l_ds.Tables[0].Rows[i]["Productname"].ToString());

                }

     

     

                l_conn.Close(); 

    2011年6月22日 上午 08:23
  • Hi,

    你程式未清除就一直加元素進去~自然有這效果

    comboBox1.Items.Add(l_ds.Tables[0].Rows[i]["Productname"].ToString());

    可改用DataSource去繫資料看看


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 vigi588 2011年6月22日 上午 08:30
    2011年6月22日 上午 08:27
  • 因為你在 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 呼叫 calcu()吧 ?

    改在Form.Load事件委派函式中呼叫.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 vigi588 2011年6月22日 上午 08:30
    2011年6月22日 上午 08:28
    版主
  • 沒把ComboBox1的內容清掉

    一直加東西 當然會有問題


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    • 已標示為解答 vigi588 2011年6月22日 上午 08:30
    2011年6月22日 上午 08:29
  • To Vigi:

    解答標示請明確, 我已經搞不清楚哪的答案才是真的解決你的問題了, 不是標越多越好, 以後會有其它網友查詢到這篇, 這樣會不知道該怎麼做才是對的.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年6月22日 上午 08:33
    版主
  • 恩好的

    不好意思  

    2011年6月22日 上午 08:36