代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_ASP.NET

问一个利用存储过程向sql数据库写入数据的有关问题

发布时间:2019-10-14浏览(2313)

    问一个利用存储过程向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)