SQLException:字符串'''后面的未闭合引号

时间:2014-12-22 01:53:09

标签: c# sql sqlexception

我的登录系统出现问题。

当我添加撇号字符(')时,我收到错误:

  

类型' System.Data.SqlClient.SqlException'未处理的异常发生在Microsoft.Practices.EnterpriseLibrary.Data.dll

中      

附加信息:字符串'''后面的未闭合引号。   '''。

附近的语法不正确

这是登录代码。这是单独使用用户名和密码,但它可以工作。

public String getSenha(string user)
    {
        String Query = "SELECT senha FROM dbo.Login WHERE usuario = '" + user + "'"; //Comando

        Conexao Connection = new Conexao(); //Instancia a classe conexao
        object ret = Connection.QueryScalar(Query); //Executa o comando e salva o resultado em 'ret'

        if (ret.GetType() == typeof(int))
            return null;
        else
            return (string)ret;
    }

public Boolean checkUser(string user)
    {
        String Query = "SELECT COUNT(usuario) FROM dbo.Login WHERE usuario = '" + user + "'";
        Conexao Connection = new Conexao();

        if ((int)Connection.QueryScalar(Query) > 0) // renorno de 0 significa que nao existe esse usuario.
            return true;
        else
            return false;
    }

public Object QueryScalar(string Command)
    {
        // Error is thrown here
        return DatabaseFactory.CreateDatabase("Windows.Properties.Settings.dboSoftwareGSCConnectionString").ExecuteScalar(CommandType.Text, Command);
    }

1 个答案:

答案 0 :(得分:5)

这是经典的SQL注入。在SQL中,语句用单引号括起来......所以你的单引号会过早地结束你的语句,因为你没有逃避它。这也使您容易受到恶意用户的攻击。您必须使用参数化SQL来避免它。请参阅:http://www.dotnetperls.com/sqlparameter