오래 전부터이 도구에 연결된 데이터베이스와 이전 도구로 작업하고 있습니다. 나는 이것에 새로운 오전 이것을 이해하는 데 도움이 필요합니다. 매번 시도하고 오류가있는 코드를 작성하는 데 도움이 필요합니다.저장 프로 시저의 업데이트 문제
public void UpdateUser(string NewUser, string OldUser)
{
using (SqlConnection con = HSDatabaseConnection())
{
using (SqlCommand cmd = new SqlCommand("UpdateNames", con))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@LogonName", System.Data.SqlDbType.VarChar).Value = NewUser;
cmd.Parameters.Add("@OldLogonName", System.Data.SqlDbType.VarChar).Value = OldUser;
cmd.ExecuteNonQuery();
}
con.Close();
}
}
나는 4 개의 테이블을 가지고 있는데, 각각의 테이블은 공통적으로 "AN"컬럼 이름입니다. 나는 에이전트가 법적으로 지금까지 내가 어떤 사람 내가 뭘 잘못 말해 주시겠습니까이 절차
USE [HSDB]
GO
/****** Object: StoredProcedure [dbo].[UpdateNames] Script Date: 9/16/2016 12:32:33 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UpdateNames]
--Add the parameters for the stored procedure here
@AN varchar(MAX)
AS
BEGIN
--SET NOCOUNT ON added to prevent extra result sets from
--interfering with SELECT statements.
SET NOCOUNT ON;
--Insert statements for procedure here
UPDATE Att
SET AN = @AN
WHERE (AN = @AN)
UPDATE MS
SET AN = @AN
WHERE (AN = @AN)
UPDATE Lost
SET AN = @AN
WHERE (AN = @AN)
UPDATE WeeklyCharges
SET AN = @AN
WHERE (AN = @AN)
END
와 함께 올라와있다
이 이름을 변경하는 경우 ""를 업데이트해야합니다. 감사합니다
'SET AN = @ AN WHERE AN = @ AN'을 만들었습니다. 이것은 아무것도하지 않고있다. 이 값을 같은 값으로 설정하고 있습니다. – Eric
정말 varchar (최대)가 필요합니까? 확실히 로그온 이름은 8,000 자 미만입니다. –
하지만 호기심이 많습니다. 데이터베이스가 없는데 왜 일부 코드를 수정하려고합니까? 애플리케이션 코드에서 데이터베이스를 리버스 엔지니어링하려고합니까? 그것은 그것을 거의 얻는 것이 거의 불가능할 가능성이 높습니다. 그리고 여러 테이블에 전체 이름을 저장하는 것은 끔찍한 일입니다. 단일 진입 점으로 정규화되어야합니다. –