【问题标题】:Why are the white spaces added to a row in my sql table?为什么在我的 sql 表中的一行中添加了空格?
【发布时间】:2010-10-25 09:19:03
【问题描述】:

我不确定这是为什么,基本上是当我使用以下函数插入一行时:

    public bool CreateUser(string username, string password, string email, int age = 0)
    {
        SqlConnection myConnection = new SqlConnection();
        myConnection.ConnectionString = "Data Source=localhost\\SQLEXPRESS;" +
        "Initial Catalog=Pubs;Integrated Security=SSPI;Trusted_Connection=True;";

        try
        {
            myConnection.Open();

            string query = "INSERT INTO SiteUser VALUES('" + username + "', '" +  password + "', '" + email + "', " + age + ")";
            SqlCommand cmd = new SqlCommand(query);
            cmd.Connection = myConnection;
            cmd.ExecuteNonQuery();

            myConnection.Close();
        }
        catch (Exception excep)
        {
            string error = excep.ToString();
            Response.Write(error);

            return false;
        }


        return true;
    }

“密码”字段最终包含空格(如“密码”)。所以无论密码是什么,它都以空格结尾。

奇怪的是这不会发生在“用户名”字段上,两者都是 char(50) 类型。

【问题讨论】:

    标签: asp.net sql database


    【解决方案1】:

    你确定一个不是 varchar(50) 而一个是 char(50)。您会发现指定 char 的数据库列将始终是该长度。

    【讨论】:

      【解决方案2】:

      我不知道这是否回答了您的问题,但您为什么不使用 varchar 类型而不是 char。或者您可以在选择查询中使用 TRIM() 函数。

      【讨论】:

      • 没有,但他应该
      • 啊,我才刚刚开始学习 ASP.Net 和 SQL。我认为它与我使用 char(50) 有关,但很困惑为什么它不会发生在用户名行上。用户名行肯定是 char(50) 并且它肯定没有填充空格..奇怪,它也是一个主键,所以也许这就是为什么?但是,是的,使密码 varchar 解决了问题:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多