我对将新用户插入数据库的方式做了一个简单的修改( DataBase SQL Server 2008 )。而不是用户输入他的完整电子邮件(username@domain.com),用户被命令单独输入用户名,然后在代码中完成一个完整的电子邮件地址,如下所示:
User.createUser(tbFirstName.Text, tbLastName.Text, tbEmail.Text + "@domain.com");
函数createUser未被更改,摘录:
db sql = new db();
sql.command = @"insert into users(first_name, last_name, email) values(@firstname, @lastname, @email)";
sql.addParam("@firstname", firstname);
sql.addParam("@lastname", lastname);
sql.addParam("@email", email);
sql.nonQuery();
在类db中实现的addParam执行名称所示的内容:
public void addParam(SqlParameter param)
{
_command.Parameters.Add(param);
}
public void addParam(string name, object value)
{
addParam(new SqlParameter(name, value));
}
:当
SqlCommand _command;
是db类中的成员。
现在当我填写一个新的用户表单并输入" user"在tbEmail中,文本与" @ domain.com"连接。根据需要和Param的值是正确的,但是在执行SQL命令时,只有文本" user"插入到数据库中,其余部分(@ domain.com)被截断(数据库中的字段为nvarchar(max))。
为什么会这样?与此修改之前的区别是什么?我如何解决它? 提前致谢 的编辑。
答案 0 :(得分:0)
尝试更改表格的列大小。可能您的列可能不足以容纳新大小