第1行C#的列'_LoginPass'的数据太长

时间:2018-06-21 17:39:50

标签: c# mysql mysql-workbench

早上好,尝试将加密数据插入数据库时​​出现此错误

enter image description here

现在这是我的Encryption脚本

    public void Encrypt(TextBox txtEncrypt, string hash, byte[] results)
    {
        hash = "placeholder";
        byte[] data = UTF8Encoding.UTF8.GetBytes(txtEncrypt.Text);
        using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
        {
            byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
            using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
            {
                ICryptoTransform transform = tripDes.CreateEncryptor();
                results = transform.TransformFinalBlock(data, 0, data.Length);
                txtEncrypt.Text = Convert.ToBase64String(results, 0, results.Length);
                //MessageBox.Show("Encryption :" + Convert.ToBase64String(results,0,results.Length));
            }
        }
    }

现在我正在像这样的另一个类上实现它

private void btnRegister_Click(object sender, EventArgs e)
    {
        try
        {
            //Best practice in c# to interact with database (using statement)
            using (MySqlConnection mysqlCon = new MySqlConnection(connection.connectionString))
            {
                mysqlCon.Open();
                //Add the stored procedure that we uses in the mysqlworkbench
                MySqlCommand mysqlCmd = new MySqlCommand("LoginAdd", mysqlCon);
                mysqlCmd.CommandType = CommandType.StoredProcedure;
                //Use trim to avoid spaces

                method.Encrypt(textBox2,hash,results);

                mysqlCmd.Parameters.AddWithValue("_LoginID", LoginID);
                mysqlCmd.Parameters.AddWithValue("_LoginUser", textBox1.Text.Trim());
                mysqlCmd.Parameters.AddWithValue("_LoginPass", textBox2);
                mysqlCmd.ExecuteNonQuery();
                MessageBox.Show("Registered Succesfully");
                //proceed to login page
                this.Hide();
                method.ConstantLoginForm();
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(""+ ex);
        }
    }

我已经搜索了一些数据,并且找到了。

enter image description here

我尝试这样做,但是什么也没发生

2 个答案:

答案 0 :(得分:1)

将_LoginPass列的大小设置为varchar(50)或更大。

答案 1 :(得分:0)

正如查尔斯·梅说的那样,我已经离开了.Text部分,正在尝试传递该对象。

所以我只需要更改此部分

 mysqlCmd.Parameters.AddWithValue("_LoginPass", textBox2);

像这样的代码

 mysqlCmd.Parameters.AddWithValue("_LoginPass", textBox2.Text.Trim());
相关问题