2013-04-13 22 views
-1

C#update語句我收到錯誤消息:與提取

IErrorInfo.GetDescription失敗,E_FAIL(0x80004005的)

我覺得在代碼是不是需要[]或任何變量?

我在尋找,每個人都與[]有關。

string queryString = "SELECT sum(skupaj) FROM cas where sifra = " + textBox1.Text + " and EXTRACT(MONTH FROM Datum) = "+textBox2.Text+""; 

try                
{ 
      OleDbConnection conn = GetConnection(); 
      OleDbCommand command = new OleDbCommand(queryString, conn); 
      conn.Open(); 
      OleDbDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       ure = reader.GetValue(0).ToString(); ; 

      } 
      reader.Close(); 

} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
+3

我想讀SQL注入。例如,如果某人在TextBox2中輸入了「DROP TABLE cas」,那麼您的代碼可能會受到攻擊。 –

+0

我知道,但那不是重點,我需要那個查詢工作。 – CrashDown

回答

0

如果你只是想要一些東西,你不需要一個datareader。只需執行以下操作:

try                
     { 
      OleDbConnection conn = GetConnection(); 
      OleDbCommand command = new OleDbCommand(queryString, conn); 
      conn.Open(); 
      int count = (Int32) command.ExecuteScalar(); 
      conn.Close();  
     } 
+0

好的,謝謝,但問題不在總和。我得到錯誤... – CrashDown

0

嘗試將表名放在方括號[CAS]中。如果您在ODBC sql中使用保留字,或者您正在使用中間有空格的字段,則必須將該字段放在一對「字段名稱」之內。

+0

我嘗試過,但仍然無法正常工作。 – CrashDown

+0

我假設你正在使用oracle,對吧?嘗試從查詢字符串中獲取實際值,例如使用調試。並在Oracle中運行,看看它是否有效。如果沒有,那麼在將它傳回您的代碼之前,嘗試在Oracle中進行更正。 – Edper

+0

我正在使用Access。 – CrashDown