问一个利用存储过程向sql数据库写入数据的问题
我想要做一个用户注册的网页,在网页上要用户输入用户名密码什么的,然后将他们保存到数据库中,我利用了存储过程:
CREATE PROCEDURE useradd
@UID varchar,
@UPassword varchar,
@UPower int,
@USex bit,
@UCityID int,
@Email varchar,
@UQuestion varchar,
@UAnswer varchar
AS
insert into Users(UID,UPassword,UPower,USex,UCityID,Email,UQuestion,UAnswer)values
(@UID,
@UPassword,
2,
@USex,
@UCityID,
@Email,
@UQuestion,
@UAnswer)
GO
在程序中写的代码:
SqlCommand cm = new SqlCommand( "useradd ", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add( "@UID ", SqlDbType.VarChar);
cm.Parameters[ "@UID "].Value = TextBox_UID.Text.ToString();
cm.ExecuteNonQuery();
上面我省略了其他数据的输入,反正都是差不多的代码.
可是比如我在用户名中输入:qwer,写到sql数据库里面的只有第一个字符q,其他数据也是这样,只有UPower这种int类型的数据你输入20,数据库里面存储的就是20,而其他的varchar都只能存储第一个字符,这是为什么呀?
------解决方案--------------------如果是非固定长度的数据类型,要加上长度,如:@UID varchar(20),
------解决方案--------------------CREATE PROCEDURE useradd
@UID varchar,
@UPassword varchar,
@UPower int,
@USex bit,
@UCityID int,
@Email varchar,
@UQuestion varchar,
@UAnswer varchar
AS
insert into Users(UID,UPassword,UPower,USex,UCityID,Email,UQuestion,UAnswer)values
(@UID,
@UPassword,
2,
@USex,
@UCityID,
@Email,
@UQuestion,
@UAnswer)
GO
中varchar型得写个长度呀,如varchar(50)