0

Visual Studio2012WebサイトプロジェクトのSQLServerに問題があります。例えば; 「name」(varchar(16))列と「surname」(varchar(16))列を持つ「user」という名前のテーブルがあります。name: "john" surname: "holiday"などの新しいデータを追加しましたが、SQLServerは変数の残りの部分を空白文字で自動的に埋めます。のようです。どうすればこれをブロックできますか?問題を明確に説明できれば幸いです。

protected void LoginButton_Click(object sender, EventArgs e)
{
    string connectionString = "Data Source=MYPC-PC\\SQLEXPRESS;Initial Catalog=fff;Integrated Security=True";
    SqlConnection connection = new SqlConnection(connectionString);
    try
    {
        connection.Open();
    }
    catch (Exception s)
    {
        FailureText.Text = s.ToString();
    }
    SqlCommand cmd = new SqlCommand("SELECT * FROM [person] WHERE user_name='" + UserName.Text + "' AND user_password='" + Password.Text + "' ", connection);

    SqlDataReader dr = null;
    dr = cmd.ExecuteReader();

    while (dr.Read())
    {
        if (this.CompareStrings(dr["user_name"].ToString(), UserName.Text) &&
            this.CompareStrings(dr["user_password"].ToString(), Password.Text))
        {
            FailureText.Text = "ok";
        }
        else
        {
            FailureText.Text = "no";
        }


    }
    connection.Close();
    dr.Close();
}

たとえば、「dr ["user_name"]」変数をデバッグしているときは、watchの変数のようになります。

4

2 に答える 2

1

テーブルを作成したときに、ANSI_PADDING設定を使用している必要があります。その場合は、テーブルを削除して再度作成する必要があります。

于 2012-12-26T02:48:58.010 に答える
1

this.CompareStrings(dr["user_name"].ToString(), UserName.Text)--> dr["user_name"].ToString().Trim()

とにかくいくつかの余分な空白がある場合は、問題を解決する可能性があります

于 2012-12-26T05:19:35.717 に答える