2013-04-04 39 views
1
namespace primarykeycheck 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     OleDbConnection myConn; 
     OleDbCommand myComm; 
     string queryString; 


     public void connectDB() 
     { 
      myConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\rummykhan\MCS\Spring 2013\Object Oriented Programming\My Apps\Testing\Database Apps\string as Primary key\primarykeycheck\db.accdb"); 
     } 
     public string fetchName(string ID) 
     { 
      string Name; 
      queryString = "select dbName from mydb where dbID =" + ID; 
      myComm = new OleDbCommand(queryString, myConn); 
      myConn.Open(); 
      Name = (string)(myComm.ExecuteScalar()).ToString(); 
      myConn.Close(); 
      return Name; 
     } 
     private void btn_fetch_Click(object sender, EventArgs e) 
     { 
      connectDB(); 
      txtName.Text = fetchName(txtID.Text); 
     } 

IM工作時,ID是給取的名字,其中ID數據類型爲字符串,BT IM面臨這樣的問題「數據類型不匹配的條件表達式「 我也試過 Name =(string)myComm.ExecuteScalar();爲什麼我不能檢索數據當我設置主鍵爲文本(字符串)

回答

1

你的陳述

queryString = "select dbName from mydb where dbID =" + ID; 

有兩個問題:

  1. 它不把引號將ID值在SQL命令。

  2. 它試圖使用舊的和非常不贊成的構建SQL命令的方式。你真的應該研究「參數化查詢」(在堆棧溢出時有批次的例子),並熟悉OleDbCommand對象的.Parameters屬性(ref:here)。

相關問題