在c#中启用多用户管理
本文关键字:多用户 管理 启用 | 更新日期: 2023-09-27 18:06:09
在users表中,每个用户的MySql数据库可以用不同的颜色存储,例如:
Users colors
Foo green
Pluto yellow
Foo red
当用户被认证时,我需要知道登录的用户与什么颜色相关联。
我使用List方法以这种方式为每个用户附加变量color:
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中发布存储在经验表中的所有行,其中存储了所有用户对每种颜色的评论。
例如,在用户Foo的情况下,我需要在GridView中发布存储在经验表中的所有评论,谈到颜色红色和绿色。
但是我不能发布这个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;
}
Edit # 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+=");"