2013-04-04 36 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)。

相关问题