在我插入到 SQL 表时将 varchar 转换为 int

本文关键字:varchar 转换 int 插入 SQL | 更新日期: 2023-09-27 17:57:13

我有这个表,我已将其命名为用户,每当用户使用注册表单时,我都想将他输入的所有凭据插入到Users.table中。问题是,不知何故,数据库正在尝试将用户名(列)从 varchar 转换为 int。这是我的插入查询:

string Query = "Insert into Users(FirstName, LastName, Username,
                Password, Role, Email, Class) values('" + txtfn.Text + "',
                '" + txtsn.Text + "','" + txtUsername.Text + "','" + txtPassword.Text + "',
                '" + cbRole.Text + "','" + txtEmail.Text + "','" + cbClass.Text + "')";

每次用户尝试注册时弹出的错误

如何防止发生此转换或有任何其他方法可以处理此错误?提前谢谢。

在我插入到 SQL 表时将 varchar 转换为 int

下面介绍如何使用 SQL 参数并指定类型。哪个更安全、更精确,还可以处理某些类型(例如日期时间)的转换:

string Query = "Insert into Users(FirstName, LastName, Username, "
            + " Password, Role, Email, Class) "
            + " values(@fn, @sm, @user, @ps, @role, @email, @class)";
SqlCommand sqlcom = new SqlCommand(Query, sqlconnection);
// change the types to match SQL Column data types
// I set all as Nvarchar as a sample
var fnParma = new SqlParameter("@fn", SqlDbType.NVarChar);
var smParma = new SqlParameter("@sm", SqlDbType.NVarChar);
var userParma = new SqlParameter("@user", SqlDbType.NVarChar);
var psParma = new SqlParameter("@ps", SqlDbType.NVarChar);
var roleParma = new SqlParameter("@role", SqlDbType.NVarChar);
var emailParma = new SqlParameter("@email", SqlDbType.NVarChar);
var classParma = new SqlParameter("@class", SqlDbType.NVarChar);
// Here set each value by converting it to the specified type.
fnParma.Value = txtfn.Text;
smParma.Value = txtsn.Text;
// Continue for all the params. If you have int column use Int32.Parse(Text);
sqlcom.ExecuteNonQuery();

sql 表中的username列需要整数,这里您传递的是字符串。因此,将表中的username列数据类型更改为varchar。它会正常工作。希望清楚。