Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MySQL编写的CSharp语句不起作用_C#_Mysql - Fatal编程技术网

C# 使用MySQL编写的CSharp语句不起作用

C# 使用MySQL编写的CSharp语句不起作用,c#,mysql,C#,Mysql,大家好, 首先,我想告诉你们,我对CSharp是新手,这就是为什么我不知道我用MySQL创建连接的方法是错误的,因此我不得不用Prepared语句来更改它。请善待我 这就是我正在努力使其工作的方法 下面的代码是我的实际连接,工作得很好 [HttpPost] 公共操作结果验证(用户eUser) { 尝试 { //从登录页面提取电子邮件和密码 var Email=eUser.Email; var Password=eUser.Password; //从数据库中提取第一封电子邮件和密码 var cur

大家好, 首先,我想告诉你们,我对CSharp是新手,这就是为什么我不知道我用MySQL创建连接的方法是错误的,因此我不得不用Prepared语句来更改它。请善待我

这就是我正在努力使其工作的方法

下面的代码是我的实际连接,工作得很好

[HttpPost]
公共操作结果验证(用户eUser)
{
尝试
{
//从登录页面提取电子邮件和密码
var Email=eUser.Email;
var Password=eUser.Password;
//从数据库中提取第一封电子邮件和密码
var currentUser=this.rpGeneric.Find(“来自用户,其中电子邮件=:Email”,新字符串[]{“Email”},新对象[]{Email}”).FirstOrDefault();
//加密登录用户密码
//加密机和解密机必须具有相同的密钥,即下面的“kahat”
var encryptpassword=EncryptHelper.EncryptString(eUser.Password,“kahat”);
//比较登录页面中的用户密码和数据库中的当前密码
if(currentUser!=null&&encryptpassword.Equals(currentUser.Password,StringComparison.Ordinal)&¤tUser.EmailConfirmed==true)
{
System.Web.Security.FormsAuthentication.SetAuthCookie(eUser.Email,false);
返回重定向操作(“索引”,“索引”,new{area=“Index”});
}
其他的
{
TempData[“Message”]=“登录失败。提供的电子邮件或密码不存在。”;
返回视图(“索引”);
}
}
捕获(例外情况除外)
{
返回ThrowJsonError(ex);
}
}

您的SQL查询不完整

cmd = new MySqlCommand(" from User " + "WHERE Email=@email " + "AND Password=@password",
                MySqlConn.conn);
您没有告诉MySql您希望它做什么,您需要添加“select”子句和从表中选择的列名:

cmd = new MySqlCommand("select [*],[column, column...] from User " + "WHERE Email=@email " + "AND Password=@password",
                MySqlConn.conn);

您的SQL查询不完整

cmd = new MySqlCommand(" from User " + "WHERE Email=@email " + "AND Password=@password",
                MySqlConn.conn);
您没有告诉MySql您希望它做什么,您需要添加“select”子句和从表中选择的列名:

cmd = new MySqlCommand("select [*],[column, column...] from User " + "WHERE Email=@email " + "AND Password=@password",
                MySqlConn.conn);

嗯,看起来您的查询中缺少了
SELECT
子句,除非它是下面指出的打字错误

cmd = new MySqlCommand(" from User " + "WHERE Email=@email " + "
                        ^... Here 

嗯,看起来您的查询中缺少了
SELECT
子句,除非它是下面指出的打字错误

cmd = new MySqlCommand(" from User " + "WHERE Email=@email " + "
                        ^... Here 

作为观察:您也不需要连接命令字符串<代码>“选择*从用户那里,Email=@Email和Password=@Password工作正常。非常感谢您的回答,但我也不明白为什么这里的cmd:MySqlCommand cmd=MySqlConn.cmd;有下划线,它说object不包含cmd的定义,也没有扩展方法cmd acception类型objectI的第一个参数我不确定你指的是什么代码,因为我在你的帖子中看不到。这个错误的意思是你试图引用一些不存在的东西。作为观察:你也不需要连接你的命令字符串<代码>“选择*从用户那里,Email=@Email和Password=@Password工作正常。非常感谢您的回答,但我也不明白为什么这里的cmd:MySqlCommand cmd=MySqlConn.cmd;有下划线,它说object不包含cmd的定义,也没有扩展方法cmd acception类型objectI的第一个参数我不确定你指的是什么代码,因为我在你的帖子中看不到。这个错误意味着你试图引用一些不存在的东西。永远不要在数据库中以纯文本形式存储密码!您的问题表明您这样做是因为您直接将用户输入与查询进行比较。不要以明文形式存储密码或加密密码,当攻击者获得DB时,他也将获得加密密钥。仅仅使用散列函数是不够的,仅仅添加一个salt对提高安全性几乎没有作用。用随机盐在HMAC上迭代大约100毫秒,并用散列保存盐。使用诸如
ehash
PBKDF2
Bcrypt
passlib.hash
等函数或类似函数。重点是让攻击者花费大量时间通过暴力手段查找密码。非常感谢您不要将密码以明文形式存储在数据库中!您的问题表明您这样做是因为您直接将用户输入与查询进行比较。不要以明文形式存储密码或加密密码,当攻击者获得DB时,他也将获得加密密钥。仅仅使用散列函数是不够的,仅仅添加一个salt对提高安全性几乎没有作用。用随机盐在HMAC上迭代大约100毫秒,并用散列保存盐。使用诸如
ehash
PBKDF2
Bcrypt
passlib.hash
等函数或类似函数。重点是让攻击者花费大量时间通过暴力手段查找密码。非常感谢