none
dataset 使用全文檢索 sql 語法問題 RRS feed

  • 問題

  • 請問 在 TableAdapter 的 sql 語法下: select * from aa where contains(*,@key)

    會顯示 不支援參數語法,那要如何在 dataset 使用 參數呢?

    感謝回覆。

    2011年8月25日 上午 11:48

解答

  • typed DataSet 是從「精靈」幫我們快速產生程式碼,因此會有許多工具上的限制。

    但其實 ADO.NET 並沒有這樣的限制,是工具本身的限制。您的問題剛好是工具的限制。雖然出現了「不支援」的警告訊息,但是還是可以用的。

    首先仍然使用如下的 sql。

    接下來自行在 TableAdapter 的屬性,Parameters 中自行新增 parameter 即可 (設定 Parameter name, DbType)

    最後,填入資料

     

     private void Form1_Load(object sender, EventArgs e)
     {
      var dataset = new DataSet1();
      ProductTableAdapter adapter = new ProductTableAdapter();
      adapter.Fill(dataset.Product, "Mountain");
      dataGridView1.DataSource = dataset.Product;
     }
    

    sample see https://skydrive.live.com/?cid=2c5e488dee8c116e&sc=documents&id=2C5E488DEE8C116E%211027# 
    • 已標示為解答 peterwu57 2011年8月26日 上午 07:15
    2011年8月26日 上午 03:12

所有回覆

  • 如果把你的sql語法寫成stored procedure之後再用TableAdapter去呼叫SP,這樣是否可行?
    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月25日 下午 10:46
  • 請問DataSet中使用參數是什麼意思呢? TSQL並沒有contains哦! 

    在DataTable中可以使用Select來過濾資料,如dt.select("a like 'a%')

    或是您可以使用Linq來做(http://www.dotblogs.com.tw/jeff-yeh/archive/2010/03/16/14067.aspx)

     

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年8月25日 下午 11:14
  • 改成 select * from aa where contains(*,'"' + @key + '"') 
    2011年8月26日 上午 12:04
  • 不行ㄟ

    會出現 「'+' 附近的 WHERE 子句錯誤。無法剖析查詢文字。」

    錯誤訊息

    還是感謝你!!

     

    2011年8月26日 上午 12:45
  • 山不轉路轉,再改成

    declare @myKey nvarchar(100)

    set @myKey =  '"' + @key + '"' 

    select * from aa where contains(*,@myKey) 

     

    注意到此時只能自行以「屬性」來改 sql command,不能再用精靈了。

    2011年8月26日 上午 01:17
  • 抱歉 可能沒說清楚,sql 語法 是寫在 vs2010 的 dataset 內

    並無法 作 declare

    或是 另一個想法  可以 動態去變更 tabadapter 內的 sql 語法㖠?

     

    2011年8月26日 上午 02:32
  • typed DataSet 是從「精靈」幫我們快速產生程式碼,因此會有許多工具上的限制。

    但其實 ADO.NET 並沒有這樣的限制,是工具本身的限制。您的問題剛好是工具的限制。雖然出現了「不支援」的警告訊息,但是還是可以用的。

    首先仍然使用如下的 sql。

    接下來自行在 TableAdapter 的屬性,Parameters 中自行新增 parameter 即可 (設定 Parameter name, DbType)

    最後,填入資料

     

     private void Form1_Load(object sender, EventArgs e)
     {
      var dataset = new DataSet1();
      ProductTableAdapter adapter = new ProductTableAdapter();
      adapter.Fill(dataset.Product, "Mountain");
      dataGridView1.DataSource = dataset.Product;
     }
    

    sample see https://skydrive.live.com/?cid=2c5e488dee8c116e&sc=documents&id=2C5E488DEE8C116E%211027# 
    • 已標示為解答 peterwu57 2011年8月26日 上午 07:15
    2011年8月26日 上午 03:12
  • 非常感謝你。

    已可正常執行。

    2011年8月26日 上午 07:18