2013-11-02 65 views
-1

所以我想通過我通過數據庫放入的區域代碼進行搜索。我輸入了代碼,然後假設在多行文本框中輸出該區號下的電話號碼和持續時間。這是我迄今爲止所擁有的。是的,我是一個初學者和一個壞的:D。如何使用文本框和搜索按鈕C#搜索數據庫?

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'phonecallsDataSet1.Calls_with_Region' table. You can move, or remove it, as needed. 
     this.calls_with_RegionTableAdapter.Fill(this.phonecallsDataSet1.Calls_with_Region); 
     tbAreaCode.Text = String.Format("Phone Number" + "\t" + "\t" + "Duration" + "\r\n" 
      + "============" + "\t" + "\t" + "======="); 
    } 

    private void btnSearchAC_Click(object sender, EventArgs e) 
    { 
     foreach (DataColumn number in phoneCallbindingSource.List) 
     { 
      if (txtAC.Text == ((int)number["Area Code"])) 
      { 
       tbAreaCode.Text += ((int)number["Phone Number"]); 
      } 
     } 
    } 
} 
} 

錯誤

不能申請用[]索引類型爲System.Data.DataColumn的表達

+2

你得到了什麼錯誤? –

+0

無法將索引與[]應用於System.Data.DataColumn類型的表達式 – user2105171

+0

我相信Fill應該聲明this.phonecallsDataSet1.Table [「Calls_with_Region」]實際上您的數據集中有任何數據嗎?此外,你會得到哪些錯誤? –

回答

0

我想查詢數據庫本身來獲取這些信息,並填寫你的文本框或者帶有返回值的列表框是你希望實現的更好的方法。

0

好吧,所以問題是你迭代的列而不是行。這是一個工作示例,顯示了兩種方法可以做同樣的事情。一個迭代通過DataTable(你是否使用DataSet,因爲你有多個表?如果你只有一個表使用DataTable,如果你有多個使用DataSet)。第二個使用了我使用的Linq,因爲作爲初學者,有必要了解一些C#更有用的功能。確保包含System.Linq。只需將其粘貼到控制檯應用程序的主界面中即可覆蓋最初的主要功能,您可以使用它進行操作。

static void Main(string[] args) 
{ 
    string CurrentAreaCode = "415";// Input from textbox; 

    // Setup Mock Dataset 
    DataSet ds = new DataSet("Information"); 
    ds.Tables.Add("AreaCodeInformation"); 
    ds.Tables[0].Columns.Add("AreaCode"); 
    ds.Tables[0].Columns.Add("PhoneNumber"); 
    ds.Tables[0].Rows.Add(); 
    ds.Tables[0].Rows[0][0] = 415; 
    ds.Tables[0].Rows[0][1] = 9252222222; 

    // output with row iterator 
    Console.WriteLine("Using Iteration of DataTable in DataSet"); 
    foreach (DataRow number in ds.Tables[0].AsEnumerable()) 
    { 
     if (number["AreaCode"].ToString() == CurrentAreaCode) 
     { 
      Console.WriteLine(number["PhoneNumber"].ToString()); 
     } 
    } 
    Console.WriteLine("Press Enter To Continue..."); 
    Console.ReadLine(); 

    // output using Linq 
    Console.WriteLine("Using Linq"); 
    Console.WriteLine((from info 
         in ds.Tables["AreaCodeInformation"].AsEnumerable() 
         where info.Field<string>("AreaCode") == CurrentAreaCode 
         select info.Field<string>("PhoneNumber")).FirstOrDefault()); 
    Console.ReadLine(); 
}