我想用一个函数从表中返回值,我不能决定什么是最好的方法。使用SqlDataReader,字典,字符串数组? 当调用函数时,我需要引用字段名字符串的数据。在c#中使用函数按字段名称返回数据库值索引
public SqlDataReader staffInfo(string field, string Username)
{
string chk_PR = this.Is_PR_Staff(Username) == true ? BW_Config.default_postroom_staff : "";
string strDBConn = db.getDBstring(Globals.booDebug);
SqlConnection conn = new SqlConnection(strDBConn);
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT " + field + " FROM BW_GetStaffInfo('" + Username + "', '" + chk_PR + "')";
cmd.Connection = conn;
conn.Open();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (reader.Read())
{
return reader;
}
else
{
return null;
}
}
}
使用功能:
SqlDataReader userInfo = User.staffInfo("StaffCode, GroupIDs, Perms", User.getUsername());
string staffCode = userInfo["StaffCode"].ToString());
它的工作原理,但奇怪的问题,它会永远循环下去,有时.. 我想类似的方法,其中它在做同样的事情,但此时它可以处理空值和如果可能,使用替代字典或字符串数组这样做的有效方法?
谢谢
也对'SqlDataReader'使用'using'语句,然后返回'SqlDataReader'对象。或者如果你愿意,你也可以返回一个'DataTable'对象。 –
请使用参数化查询来避免[SQL注入](https://www.owasp.org/index.php/SQL_Injection)黑客入侵。你的方法公开地邀请潜在的攻击者传入类似“无”的东西; - 注释掉原始查询的其余部分。 –
ryanyuyu