2015-04-21 43 views
-2

我對我所然而寫了這個代碼 的存款/取款交易銀行項目的工作,我得到錯誤,錯誤而來自OleDb的數據庫中檢索數據

錯誤1「串」不包含關於「getDouble」和無 擴展方法「getDouble」接受 類型的第一個參數的定義「字符串」可以發現

錯誤2的名稱「結果」不存在於當前上下文存在

+1

我認爲錯誤信息是清楚的。 'result'是字符串,除非你寫了一個擴展方法,否則它沒有'getDouble'方法。 –

+0

如果您試圖將字符串轉換爲double值,請嘗試使用Convert.ToDouble()方法。你也嘗試在結果有任何值之前使用結果:'字符串結果;'這也應該引發異常。你可以使用:'string result = null;'來初始化它。 – CalebB

+0

注意:撤消是一個詞,不需要大寫'd' –

回答

0

除了什麼Akshita2gud提出了從查詢您的數據天平時,從讀者的雙重價值您的更新命令形成不良,即使內部,你能向SQ開放通過將字符串添加到一起來進行L-注射?當然...

我發現的OleDB命令使用「?」作爲來自您的活動的參數值的放置位置。你有參數字符串,但基於從屏幕上手動輸入的內容構建字符串。你應該把它作爲:

string update = "Update Accounts Set Balance = ? Where acctNO = ?"; 

而在同一序號位置的SQL-更新上面的餘額字段添加的參數添加的第一個,賬號加入第二。如果餘額是數字,則不需要字符串,因爲參數是數字。與帳號類似。如果字符串,並且參數是字符串,它知道如何處理它。我喜歡在參數名稱的前面加上前綴,這樣就不會認爲它知道列名與你打算進入的內容......因爲在OleDB查詢中沒有命名參數。我已經添加了「p」,分別表示balance和acctno的「參數」。

df.Parameters.AddWithValue("@pBalance", balance); // balance is already numeric 
df.Parameters.AddWithValue("@pAcctNo", AcctDep.Text); // account # is string 

df.ExecuteNonQuery(); 
dc.Close(); 

應用類似SQL的更新您的存款和撤回聲明,並根據需要,如由Akshita2gud提出解決您的數字轉換。

1

似乎你正試圖從表中獲得平衡的價值。做到這一點的方法是

 balance = Convert.ToInt32(df.ExecuteScalar()); 

GetDouble方法可與OledbDataReader(DbDataReader)和不過我建議你給予適當的命名conventions.Names像「東風」作爲

 OleDbDataReader dr = df.ExecuteReader(); 
     while (dr.Read()) 
     { 
      double val = dr.GetDouble(0);//ordinal of column 
     } 

導致程序員無處不在調試代碼,因爲它變得複雜