C# 如何打破界限?

C# 如何打破界限?,c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,我有一句话: cmd.CommandText = "SELECT registeruser_id,registeruser_username, registeruser_email,registeruser_password FROM TestDB_RegisterUser where registeruser_email='" + email + "' and registeruser_password='" + pwd + "' and registeruser_rowstate<3

我有一句话:

cmd.CommandText = "SELECT registeruser_id,registeruser_username, registeruser_email,registeruser_password FROM TestDB_RegisterUser where registeruser_email='" + email + "' and registeruser_password='" + pwd + "' and registeruser_rowstate<3 ";
当我尝试在字符串的某个部分按Enter键时,会得到一大串红线,表明我所做的被认为是错误的


那我怎么打破它呢?谢谢

是的,因为常规字符串文本不能在源代码中包含换行符。您可以在逐字字符串文字中包含一个,但是:

或者使用字符串连接将其断开:

string sql = "SELECT FOO " +
             "FROM BAR " +
             "WHERE X=Y";
但是,更重要的是,您当前正在一个数据库中构建SQL。不要像这样在SQL中直接包含值。相反,请使用参数化SQL,然后为参数指定值:

string sql = "SELECT FOO FROM BAR WHERE X=@X";
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.Add("@X", SqlDbType.NVarChar).Value = "...";
    using (var reader = command.ExecuteReader())
    {
        ...
    }
}

是的,因为常规字符串文本不能在源代码中包含换行符。您可以在逐字字符串文字中包含一个,但是:

或者使用字符串连接将其断开:

string sql = "SELECT FOO " +
             "FROM BAR " +
             "WHERE X=Y";
但是,更重要的是,您当前正在一个数据库中构建SQL。不要像这样在SQL中直接包含值。相反,请使用参数化SQL,然后为参数指定值:

string sql = "SELECT FOO FROM BAR WHERE X=@X";
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.Add("@X", SqlDbType.NVarChar).Value = "...";
    using (var reader = command.ExecuteReader())
    {
        ...
    }
}

是的,因为常规字符串文本不能在源代码中包含换行符。您可以在逐字字符串文字中包含一个,但是:

或者使用字符串连接将其断开:

string sql = "SELECT FOO " +
             "FROM BAR " +
             "WHERE X=Y";
但是,更重要的是,您当前正在一个数据库中构建SQL。不要像这样在SQL中直接包含值。相反,请使用参数化SQL,然后为参数指定值:

string sql = "SELECT FOO FROM BAR WHERE X=@X";
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.Add("@X", SqlDbType.NVarChar).Value = "...";
    using (var reader = command.ExecuteReader())
    {
        ...
    }
}

是的,因为常规字符串文本不能在源代码中包含换行符。您可以在逐字字符串文字中包含一个,但是:

或者使用字符串连接将其断开:

string sql = "SELECT FOO " +
             "FROM BAR " +
             "WHERE X=Y";
但是,更重要的是,您当前正在一个数据库中构建SQL。不要像这样在SQL中直接包含值。相反,请使用参数化SQL,然后为参数指定值:

string sql = "SELECT FOO FROM BAR WHERE X=@X";
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.Add("@X", SqlDbType.NVarChar).Value = "...";
    using (var reader = command.ExecuteReader())
    {
        ...
    }
}

如果你把你的确切标题放在如何打破C线上?对于谷歌来说,第一个结果将是一个答案。下次在这里问之前,试着这样做。谢谢!…=选择registeruser_id+。。。然后在加号后按enter键顺便说一下,查找参数和sql注入。不要只是将一个sql字符串与用户输入连接起来。如果你把你的确切标题放在C行上,如何打断它?对于谷歌来说,第一个结果将是一个答案。下次在这里问之前,试着这样做。谢谢!…=选择registeruser_id+。。。然后在加号后按enter键顺便说一下,查找参数和sql注入。不要只是将一个sql字符串与用户输入连接起来。如果你把你的确切标题放在C行上,如何打断它?对于谷歌来说,第一个结果将是一个答案。下次在这里问之前,试着这样做。谢谢!…=选择registeruser_id+。。。然后在加号后按enter键顺便说一下,查找参数和sql注入。不要只是将一个sql字符串与用户输入连接起来。如果你把你的确切标题放在C行上,如何打断它?对于谷歌来说,第一个结果将是一个答案。下次在这里问之前,试着这样做。谢谢!…=选择registeruser_id+。。。然后在加号后按enter键顺便说一下,查找参数和sql注入。不要只是将sql字符串与用户输入连接起来。