我该如何更改:
using (SqlCommand myCommand = myConnection.CreateCommand()) { myConnection.Open(); myCommand.CommandText = "SELECT FormID FROM tbl_Form"; using (SqlDataReader reader = myCommand.ExecuteReader()) { while (reader.Read()) { int FormID = reader.GetInt32(reader.GetOrdinal("FormID")); MessageBox.Show(FormID.ToString()); } } }
得到 MAX(FormID) 吗?
我的自然趋势是在FormID周围抛出一个MAX,但是我遇到了IndexOutOfRange异常。
当您选择最大ID时,您不应使用SqlDataReader-查询仅返回一项,默认情况下未命名,因此您的现有查询会中断,因为它希望得到一个名为“ FormID”的结果-尽管您可以通过以下方式“固定”查询使用"SELECT MAX(FormID) as FormId FROM tbl_Form"。而是使用ExecuteScalar():
SqlDataReader
"SELECT MAX(FormID) as FormId FROM tbl_Form"
ExecuteScalar()
myCommand.CommandText = "SELECT MAX(FormID) FROM tbl_Form"; int maxId = Convert.ToInt32(myCommand.ExecuteScalar());