2011-12-13 53 views
0

在使用下面的代碼時,我收到「語法錯誤」。 當你輸入這個特定蛋白質的所有值時(這是一個項目聯合生物學和編程)'serialPro'是一個包含數字但保存爲字符串的文本框 'Reset_Click'重置所有文本框 的代碼:!語法錯誤,而來自不同表格的比較值

  if ((serialPro.Text == String.Empty) || (codon1.Text == String.Empty)) 
     { 
      MessageBox.Show("You didn't fill all the fields","Attention" 
      MessageBoxButtons.OK, 
      MessageBoxIcon.Exclamation, 
      MessageBoxDefaultButton.Button1); 
      Reset_Click(sender, e); 
     } 
     else 
     { 

      string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb"; 
      OleDbConnection myConnection = new OleDbConnection(connectionString); 
      myConnection.Open(); 

      string mySQL = " SELECT COUNT(tblOrderAA.orderAASerialPro) AS orderAASerialPro1 FROM tblOrderAA" + 
          "WHERE tblOrderAA.orderAASerialPro=" + Convert.ToInt32(serialPro.Text) + 
          " SELECT (tblProInfo.proInfoSerialNum) FROM tblProInfo WHERE tblProInfo.proInfoSerialNum=" + 
          Convert.ToInt32(serialPro.Text); 
      OleDbCommand datacommand = new OleDbCommand(mySQL, myConnection); 

      OleDbDataReader dataReader = datacommand.ExecuteReader(); 
      dataReader.Read(); 
      if (dataReader.GetInt32(0) == dataReader.GetInt32(1)) 
      { 
       MessageBox.Show("You have entered all the amino acids for this protein", "Attention", 
       MessageBoxButtons.OK, 
       MessageBoxIcon.Exclamation, 
       MessageBoxDefaultButton.Button1); 
       Reset_Click(sender, e); 
      } 

TNX的幫助

回答

0

首先,您設置它的方式,即使它被訪問支持,也會要求您處理不同的結果集(爲了從第二個select語句中獲取值,您必須調用Reader.NextResult。

然而,這是一個容易解決的問題:打破你的查詢成單獨的命令,只是得到每個查詢的一個值,你正在尋找:

 int TotalCompleted; 
     int TotalToComplete; 

     string mySQL; 
     OleDbCommand datacommand; 
     object oValue; 

     mySQL = " SELECT COUNT(tblOrderAA.orderAASerialPro) AS orderAASerialPro1 FROM tblOrderAA WHERE tblOrderAA.orderAASerialPro=" + Convert.ToInt32(serialPro.Text); 
     datacommand = new OleDbCommand(mySQL, myConnection); 

     oValue = datacommand.ExecuteScalar(); 
     if (oValue != DBNull.Value) 
     { 
      TotalCompleted = (int)oValue; 
     } else 
     { 
      TotalCompleted = 0; 
     } 

     mySQL = "SELECT tblProInfo.proInfoSerialNum FROM tblProInfo WHERE tblProInfo.proInfoSerialNum=" + Convert.ToInt32(serialPro.Text); 
     datacommand = new OleDbCommand(mySQL, myConnection); 

     oValue = datacommand.ExecuteScalar(); 
     if (oValue != DBNull.Value) 
     { 
      TotalToComplete = (int)oValue; 
     } else 
     { 
      TotalToComplete = 0; 
     } 

     if (TotalCompleted == TotalToComplete) 
     { 
      MessageBox.Show("You have entered all the amino acids for this protein", "Attention", 
      MessageBoxButtons.OK, 
      MessageBoxIcon.Exclamation, 
      MessageBoxDefaultButton.Button1); 
      Reset_Click(sender, e); 
     } 
1

,如果在你的MySQL查詢兩個SELECT語句我不知道是否有效,或者你爲什麼只取一個字符串把它變成一個數字,這樣你就可以將它添加到另一個字符串中,但這可能是語法錯誤的原因。

" SELECT COUNT(tblOrderAA.orderAASerialPro) AS orderAASerialPro1 FROM tblOrderAA" + 
"WHERE tblOrderAA.orderAASerialPro=" + Convert.ToInt32(serialPro.Text) + 

連接此字符串的方式意味着在tblOrderAAWHERE之間不會有空格。在兩者之間增加一個空格。

您還應該查看SQL注入/參數化查詢。

+0

所以,我怎麼可以把2所陳述中一個字符串?每個人的作品,如果它的唯一陳述。 – user1017315

+0

任何幫助?!我需要它儘快 – user1017315