在表 users 中,每个用户的 MySql 数据库可以用不同的颜色存储,例如:
Users colors
Foo green
Pluto yellow
Foo red
当用户通过身份验证时,我需要知道与登录用户关联的颜色是什么。
我使用 List 方法以这种方式为每个用户附加变量颜色:
List<string> colorList = new List<string>();
....
if (reader.HasRows)
{
while (reader.Read())
{
Colors = reader["Colors"].ToString();
colorList.Add(Colors.ToString());
}
ns = string.Join(", ", colorList.ToArray());
}
这里一切正常。
现在我需要在 GridView 中发布存储在 Experience 表 中的所有行,其中存储了所有用户对每种颜色的评论。
例如,在用户 Foo 的情况下,我需要在 GridView 中发布所有存储在 Experience 表 中的评论,说到 colors红色和绿色。
但我不能发布这个 GridView 因为如果用户是 Foo 我只会看到关于 红色 的评论而没有评论绿色。
用循环思考我有这个输出:
SELECT * FROM Experience WHERE Colors IN ('red');
SELECT * FROM Experience WHERE Colors IN ('green');
下面是我的代码。
有人知道我该如何解决吗?
你能推荐一下吗?
你能帮帮我吗?
提前谢谢你。
private DataSet RetrieveColors()
{
str = null;
strArr = null;
count = 0;
str = ns == null ? "" : ns.ToString();
char[] splitchar = { ',' };
if (!string.IsNullOrEmpty(str))
{
strArr = str.Split(splitchar);
}
else
{
strArr = null;
}
for (count = 0; count <= strArr.Length - 1; count++)
{
sql = @" SELECT * FROM Experience WHERE Colors IN (?); ";
}
DataSet dsColors = new DataSet();
using (OdbcConnection cn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
cn.Open();
using (OdbcCommand cmd = new OdbcCommand(sql, cn))
{
for (count = 0; count <= strArr.Length - 1; count++)
{
cmd.Parameters.AddWithValue("param1", Server.UrlDecode(strArr[count].Trim()));
}
OdbcDataAdapter adapter = new OdbcDataAdapter(cmd);
adapter.Fill(dsColors);
}
}
return dsColors;
}
编辑#1
Users colors
Foo green
Pluto yellow
Foo red
最佳答案
试试这段代码:
sql = @" SELECT * FROM Experience WHERE Colors IN (?";
for (count = 1; count <= strArr.Length - 1; count++)
{
sql += ",?"; // add more placeholders as needed
}
sql+=");"
关于c# - 在c#中启用多用户管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804394/