2013-03-09 155 views
0
StudentID > Number 

StudentName > Text 

StudentCNIC > Text 

StudentDOB > Date/Time 

我試圖創建一個搜索文本框,其中的結果顯示在文本框中。我有一個叫做FindBtn的按鈕,其中用戶輸入StudentID,學生姓名或學生CNCI(只是疼痛數字)。結果將顯示在文本框... StudIDTb(顯示學生ID),StudNameTb(顯示學生姓名),StudCNCITb(顯示學生CNCI)和StudDOBTb(顯示學生DOB)中。數據庫訪問搜索文本框

我在互聯網上看到的很多例子使用gridview,但我使用文本框來顯示結果。我已經找到感興趣的那些是...

herehereherehere

public Form1() 
    { 
     InitializeComponent(); 
     //Connection String for Access 2003. 
     myCon = new OleDbConnection(@" Provider=Microsoft.Jet.OLEDB.4.0;Data 
     Source=C....\StudDB.mdb "); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

     this.studentsTableAdapter.Fill(this.studDBDataSet.Students); 
    } 

在FindBtn功能做了以下....

private void FindBtn_Click(object sender, EventArgs e) 
    { 
     string title = textBox1.Text.ToString(); 
     if (title != "") 
     { 
      string queryString = "SELECT * FROM Students + title; 
      //I need help here 
      StudIDTb.Text = queryString; 
      StudNameTb.Text = queryString; 
      StudCNCITb.Text = queryString; 
      StudDOBTb.Text = queryString; 
     } 
     else 
      MessageBox.Show("Please try again\nError: "); 
    } 

結果表明。 ...

SELECT * 
FROM Students 103 

在每個文本框和EXE凍結,所以顯然這是錯誤的。請有人幫助我在這裏,提前謝謝。

UPDATE 1 我已經包括的OleDbCommand,的CommandType和只是字符串變量之前開口連接,其防止屏幕的凍結,但它並沒有解決問題

UPDATE 2 找到東西我喜歡,但它不工作 Here

更新3

作爲C語言尖角,友情提供的一段代碼....

private void btnFind_Click(object sender, EventArgs e) 
    { 
     string title = textBox1.Text.ToString(); 
     string queryString = "SELECT * FROM Students" + title; 
     OleDbCommand command = new OleDbCommand(); 
     command.CommandText = queryString; 

     command.Connection = myCon; 
     myCon.Open(); 

     OleDbDataReader dr = command.ExecuteReader(); 
     while (dr.Read()) 
     { 
      StudIDTb.Text += String.Format("Student ID:     
      {0}\n",dr["StudID"].ToString()); 
      StudNameTb.Text += String.Format("StudentName ID: {0}\n", 
      dr["StudentName"].ToString()); 
      StudCNCITb.Text += String.Format("StudentCNIC: {0}\n", 
      dr["StudentCNIC"].ToString()); 
      StudDOBTb.Text += String.Format("StudentCNIC: {0}\n", 
      dr["StudentCNIC"].ToString()); 
     } 
     myCon.Close(); 

我修改格式化之後接收到錯誤....

「Microsoft Jet數據庫引擎無法找到輸入表或查詢 'Students101'。請確保它存在並且其名稱拼寫是否正確」。

我在看它現在要找出它意味着

+0

這個錯誤是因爲你的查詢是錯誤的,你應該包括在查詢一些你的參數: 的queryString =「SELECT * FROM學生,其中StudentName =」 + txtStudentNameTb.Text +「或StudentCNIC =」+ txtStudentCNIC.Text 但這不是「安全」的方式,我對querys等知道不多,但是你應該google關於參數化querys的一些東西,應該有足夠的解釋 – 2013-03-09 20:04:26

回答

2

這裏的,如果你提供的OleDbCommand,命令類型等更新應該工作(也是一個例子你代碼太所以我們可以看到你改變了什麼):

OleDbCommand command = new OleDbCommand(); 
command.CommandText = queryString; 
command.Connection = myCon; 
myCon.Open(); 
OleDbDataReader dr = command.ExecuteReader(); 
while(dr.Read()) 
{ 
    StudIDTb.Text += dr["StudID"].ToString(); 
    StudNameTb.Text += dr["StudName"].ToString(); 
    StudCNCITb.Text += dr["StudCNCI"].ToString(); 
    StudDOBTb.Text += dr["StudDOB"].ToString(); 
} 
myCon.Close(); 
+0

我現在看着它請和我一起熊,謝謝 – bucketblast 2013-03-09 19:27:06

+0

我沒有包含格式,所以你可以添加如下內容: StudIDTb.Text + = String。格式(「學生ID:{0} \ n」,dr [「StudID」]。ToString()); – 2013-03-09 19:36:15

+0

你能幫助我的錯誤,更新3 – bucketblast 2013-03-09 19:57:42