2 回答
TA贡献1811条经验 获得超5个赞
该代码生成的 SQL 查询是:
Select * from 'student' where username="noor123" and password="123456"
表不能在里面'',因为那不是正确的 SQL 语法。
您不能使用参数作为表名,而是这样做,这样您就不会获得''表名:
connection.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "Select * from " + userType.ToString() + " where username=@user and password=@pass";
cmd.Parameters.AddWithValue("@user", user);
cmd.Parameters.AddWithValue("@pass", pass);
cmd.Connection = connection;
MySqlDataReader login = cmd.ExecuteReader();
TA贡献1111条经验 获得超0个赞
如果这只是一个作业而不是真实世界的程序,那么请执行以下操作。
确保变量 userType、user 和 pass 是 String 类型。
确保 userType 表示语法正确的表或视图名称。
更新这一行
cmd.CommandText = $"Select * from {userType} where username=@user and password=@pass";
删除此行
cmd.Parameters.AddWithValue("@userType", userType);
我相信这应该有所帮助。我没有检查自己。
然而在现实世界中你不应该这样编程。在处理身份验证/授权时有许多安全考虑因素,更不用说 sql 注入的可能性了。如果这是一个真实的项目,那么我建议您阅读有关该主题的适当材料。
- 2 回答
- 0 关注
- 107 浏览
添加回答
举报