namespace PayrollSystem.Models
{
public class FormAddEmployee
{
public string FirstName { set; get; }
public string LastName { set; get; }
public decimal PayRate { set; get; }
public DateTime StartDate { set; get; }
public DateTime EndDate { set; get; }
private string m_connectionString;
public void Connect(string server, string database)
{
m_connectionString = string.Format("Data Source ='{0}'; Initial Catalog = {1}; Integrated Security=SSPI", server, database);
}
public void SaveEmployee()
{
var commandText = string.Format("INSERT INTO Personnel (FirstName, LastName, PayRate, StartDate, EndDate) VALUES ('{0}', '{1}', {2}, '{3}', '{4}')", FirstName, LastName, PayRate, StartDate, EndDate);
SQLDataWriter(commandText);
}
public void GetEmployeeByLastName(string lastName)
{
var commandText = string.Format("SELECT FirstName, LastName, PayRate, StartDate, EndDate FROM Personnel WHERE LastName = '{0}'", LastName);
var retValue = SQLDataReader(commandText);
var rec = retValue.Rows[0];
FirstName = rec.ItemArray[0].ToString();
LastName = rec.ItemArray[1].ToString();
PayRate = Convert.ToDecimal(rec.ItemArray[2].ToString());
StartDate = Convert.ToDateTime(rec.ItemArray[3].ToString());
EndDate = Convert.ToDateTime(rec.ItemArray[4].ToString());
}
public DataTable SQLDataReader(string sqlCmd)
{
var dataTable = new DataTable();
using (var con = new SqlConnection(m_connectionString))
{
using (var cmd = new SqlCommand(sqlCmd, con) { CommandTimeout = 500 })
{
var sqlAdapter = new SqlDataAdapter(cmd);
sqlAdapter.Fill(dataTable);
}
}
return dataTable;
}
public void SQLDataWriter(string sqlCmd)
{
using (var con = new SqlConnection(m_connectionString))
{
con.Open();
try
{
using (var command = new SqlCommand(sqlCmd, con))
{
command.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
}
1
A
回答
0
該查詢可能不會返回任何數據。在訪問之前最好檢查一下。
var retValue = SQLDataReader(commandText);
if(retValue.Rows.Count > 0)
{
var rec = retValue.Rows[0];
FirstName = rec.ItemArray[0].ToString();
LastName = rec.ItemArray[1].ToString();
PayRate = Convert.ToDecimal(rec.ItemArray[2].ToString());
StartDate = Convert.ToDateTime(rec.ItemArray[3].ToString());
EndDate = Convert.ToDateTime(rec.ItemArray[4].ToString());
}
0
首先,你應該使用參數化的命令,以保護自己免受SQL注入......在這種情況下,你的索引進行收集,而不是否有任何行檢查值。
而是執行此操作:
if(retValue.Rows.Count > 0)
{
var rec = retValue.Rows[0];
}
+0
謝謝你的回覆。 –
相關問題
- 1. System.IndexOutOfRangeException:沒有一行位置0
- 2. C#「System.IndexOutOfRangeException:有沒有一行位置0」時,使用存儲過程
- 3. 獲取當前位置0 0
- 4. 當試圖從數據庫顯示數據時沒有數據
- 5. 如何從視圖中獲取表數據是asp.net mvc 4
- 6. ASP.NET MVC 3:從視圖中獲取所有文本框數據
- 7. 獲取錯誤「在位置0沒有行」
- 8. 「位置0沒有行」?
- 9. C# - 位置0沒有行
- 10. 位置0沒有行,C#
- 11. 還有在位置沒有行0
- 12. SqlDataReader在沒有數據時獲取行
- 13. iOS:從沒有地圖的當前位置獲取地理位置的角度
- 14. 我得到「沒有行位置0」,而我嘗試從SQL
- 15. 數據行System.IndexOutOfRangeException
- 16. 有沒有辦法手動獲取地理位置數據進行測試?
- 17. VB.NET - 「位置0沒有行」但數據庫中的記錄
- 18. 在位置0沒有行OleDb數據庫
- 19. 當位置服務被ios關閉時獲取位置數據
- 20. C#在位置0處沒有行
- 21. VB在位置0沒有行
- 22. System.InvalidOperationException當試圖從數據庫中獲取數據
- 23. 沒有排在位置0
- 24. 如何在ASP.net中獲取數據MVC
- 25. 在ASP.NET MVC ViewModel類中獲取數據?
- 26. 在mysql表中獲取當前位置
- 27. 休眠當我試圖從數據庫中獲取數據時,「沒有會話或會話已關閉」
- 28. 在MVC中編輯時從多個表中獲取數據
- 29. 獲取數據 - Asp.net MVC
- 30. 當嘗試在onActivityResult中獲取數據意圖時發生NullPointerException
謝謝您的幫助。我解決了我的問題。我在我的SQL查詢中傳遞了錯誤的參數。這就是爲什麼它返回零結果。 –