您好,我有这段代码可以从SQL DB读取数据。
我不知道应该如何编辑它,以便可以使用原始列名而不是列索引。
string query = "SELECT * FROM zajezd WHERE event='" + thisrow+ "' AND year='" + klientClass.Year() + "'"; SqlCommand cmd= new SqlCommand(query, spojeni); spojeni.Open(); SqlDataReader read= cmd.ExecuteReader(); if (read.Read()) { maskedTextBox2.Text = read.IsDBNull(24) ? string.Empty : read.GetDateTime(24).ToString("MM/dd/yyyy");
提前致谢。
您正在寻找SqlDataReader.GetOrdinal
根据MSDN
给定列名,获取列序号。
if (read.Read()) { int colIndex = read.GetOrdinal("MyColumnName"); maskedTextBox2.Text = read.IsDBNull(colIndex) ? string.Empty : read.GetDateTime(colIndex).ToString("MM/dd/yyyy"); }
附带说明,您的查询对sql注入开放。不要使用字符串连接来构建sql命令,而要使用参数化查询
string query = "SELECT * FROM zajezd WHERE event=@p1 AND year=@p2"; using(SqlCommand cmd= new SqlCommand(query, spojeni)) { spojeni.Open(); cmd.Parameters.AddWithValue("@p1",thisrow); cmd.Parameters.AddWithValue("@p2",klientClass.Year().ToString()); using(SqlDataReader read= cmd.ExecuteReader()) { ...... } }