发一个静态form的html给客户。用户点击上面的按钮,所填信息自动写入公司web服务器,填写信息大致为中、英文姓名住址等。要求是,当用户发送资料,如果数据表里没有这个用户(中文用户名),则添加。如果已经存在,则更新已经存在用户(中文用户名)的资料。
我添加新用户就可以,但同名用户更新就没有实现。我为什么更新不了同名的用户,如何实现??
用存储过程实现。
下面是我写的存储过程和部分程序:
*************************************************************
CREATE PROCEDURE AddNewUser
(
@CHI_NAME varchar(50),
@ENG_NAME varchar(50),
@CUST_TYPE varchar(50),
@TEL_NO varchar(50),
@FAX_NO varchar(50),
@ATTN varchar(50),
@CHI_ADD varchar(50),
@ENG_ADDR varchar(50),
@NOTES varchar(50),
@result int output
)
AS
-----CHI_NAME=@CHI_NAME 同名用户
if exists (SELECT SEQ FROM z_CUST WHERE CHI_NAME=@CHI_NAME )
BEGIN
SET @RESULT = -1END
ELSE
BEGIN
INSERT INTO z_CUST (
CHI_NAME,
ENG_NAME,
TEL_NO,
FAX_NO,
CHI_ADD,
ENG_ADDR,
CUST_TYPE,
ATTN,
NOTES
)
VALUES (
@CHI_NAME,
@ENG_NAME,
@TEL_NO,
@FAX_NO,
@CHI_ADD,
@ENG_ADDR,
@CUST_TYPE,
@ATTN,
@NOTES
)
END
GO
*******************************************************************
程序部分:
string CHI_NAME=Request.Params["CHI_NAME"].Trim();
string ENG_NAME=Request.Params["ENG_NAME"].Trim();
string CUST_TYPE=Request.Params["CUST_TYPE"].ToString();
string TEL_NO=Request.Params["TEL_NO"].Trim();
string FAX_NO=Request.Params["FAX_NO"].Trim();
string ATTN=Request.Params["ATTN"].Trim();
string CHI_ADD=Request.Params["CHI_ADD"].Trim();
string ENG_ADDR=Request.Params["ENG_ADDR"].Trim();
string NOTES=Request.Params["NOTES"].Trim();
//试图添加新用户
BLL.User user = new BLL.User();
//int userId = user.AddNewUser( CHI_NAME,ENG_NAME,TEL_NO,FAX_NO,CHI_ADD,ENG_ADDR,CUST_TYPE,ATTN,NOTES);
int userId = user.AddNewUser(CHI_NAME, ENG_NAME, CUST_TYPE,TEL_NO,FAX_NO,ATTN,CHI_ADD,ENG_ADDR,NOTES);
//(CHI_NAME,ENG_NAME,TEL_NO,FAX_NO,CHI_ADD,ENG_ADDR,CUST_TYPE,ATTN,NOTES)
//如果返回值为-1,则表示用户名存在
if (userId == -1)
{
BLL.AdminDB adminup = new BLL.AdminDB();
adminup.UpdateUserinfo(CHI_NAME, ENG_NAME,CUST_TYPE,TEL_NO,FAX_NO,ATTN,CHI_ADD,ENG_ADDR,NOTES);Response.Write( "<script>alert('用户名已存在!将修改原登记资料!');</script>");
我添加新用户就可以,但同名用户更新就没有实现。我为什么更新不了同名的用户,如何实现??
用存储过程实现。
下面是我写的存储过程和部分程序:
*************************************************************
CREATE PROCEDURE AddNewUser
(
@CHI_NAME varchar(50),
@ENG_NAME varchar(50),
@CUST_TYPE varchar(50),
@TEL_NO varchar(50),
@FAX_NO varchar(50),
@ATTN varchar(50),
@CHI_ADD varchar(50),
@ENG_ADDR varchar(50),
@NOTES varchar(50),
@result int output
)
AS
-----CHI_NAME=@CHI_NAME 同名用户
if exists (SELECT SEQ FROM z_CUST WHERE CHI_NAME=@CHI_NAME )
BEGIN
SET @RESULT = -1END
ELSE
BEGIN
INSERT INTO z_CUST (
CHI_NAME,
ENG_NAME,
TEL_NO,
FAX_NO,
CHI_ADD,
ENG_ADDR,
CUST_TYPE,
ATTN,
NOTES
)
VALUES (
@CHI_NAME,
@ENG_NAME,
@TEL_NO,
@FAX_NO,
@CHI_ADD,
@ENG_ADDR,
@CUST_TYPE,
@ATTN,
@NOTES
)
END
GO
*******************************************************************
程序部分:
string CHI_NAME=Request.Params["CHI_NAME"].Trim();
string ENG_NAME=Request.Params["ENG_NAME"].Trim();
string CUST_TYPE=Request.Params["CUST_TYPE"].ToString();
string TEL_NO=Request.Params["TEL_NO"].Trim();
string FAX_NO=Request.Params["FAX_NO"].Trim();
string ATTN=Request.Params["ATTN"].Trim();
string CHI_ADD=Request.Params["CHI_ADD"].Trim();
string ENG_ADDR=Request.Params["ENG_ADDR"].Trim();
string NOTES=Request.Params["NOTES"].Trim();
//试图添加新用户
BLL.User user = new BLL.User();
//int userId = user.AddNewUser( CHI_NAME,ENG_NAME,TEL_NO,FAX_NO,CHI_ADD,ENG_ADDR,CUST_TYPE,ATTN,NOTES);
int userId = user.AddNewUser(CHI_NAME, ENG_NAME, CUST_TYPE,TEL_NO,FAX_NO,ATTN,CHI_ADD,ENG_ADDR,NOTES);
//(CHI_NAME,ENG_NAME,TEL_NO,FAX_NO,CHI_ADD,ENG_ADDR,CUST_TYPE,ATTN,NOTES)
//如果返回值为-1,则表示用户名存在
if (userId == -1)
{
BLL.AdminDB adminup = new BLL.AdminDB();
adminup.UpdateUserinfo(CHI_NAME, ENG_NAME,CUST_TYPE,TEL_NO,FAX_NO,ATTN,CHI_ADD,ENG_ADDR,NOTES);Response.Write( "<script>alert('用户名已存在!将修改原登记资料!');</script>");
在这里判断的时候,你要确保中间数据操作可以返回-1(如果有重复记录的话),你可以使用单步调试测试一条重复的记录,看看数据操作处理的地方是否返回-1;另外就是检查一下你的更新数据的地方是否ok