우선, 도와주세요! 나 더이상 이걸 받아 들일 수 없어. 오류가있는 위치를 찾을 수 없습니다. 여기 내 문제가 있습니다 :업데이트 문 업데이트 0 C# Winform 응용 프로그램을 통해 행?
나는 C# winform 응용 프로그램을 통해 행을 업데이트하려고합니다. 응용 프로그램에서 생성 된 업데이트 쿼리의 서식이 올바르게 지정되었습니다. 나는 SQL 서버 환경에서 그것을 테스트, 잘 작동했습니다. 내가 응용 프로그램에서 실행하면 0 행이 업데이트됩니다.
리플렉션을 사용하여 업데이트 구문을 생성하는 스 니펫입니다. 알아 내려고하지 마세요.
objSqlCommand.CommandText = "UPDATE " + this.TableName + " SET " + SQL + " WHERE " + cust.PKName + " = @cusID AND PhoneNumber = " + "'" + "@phNum" + "'";
는 DML 생성 :
public void Update(int cusID)
{
SqlCommand objSqlCommand = new SqlCommand();
Customer cust = new Customer();
string SQL = null;
try
{
if ((cusID != 0))
{
foreach (PropertyInfo PropertyItem in this.GetType().GetProperties())
{
if (!(PropertyItem.Name.ToString() == cust.PKName))
{
if (PropertyItem.Name.ToString() != "TableName")
{
if (SQL == null)
{
SQL = PropertyItem.Name.ToString() + " = @" + PropertyItem.Name.ToString();
}
else
{
SQL = SQL + ", " + PropertyItem.Name.ToString() + " = @" + PropertyItem.Name.ToString();
}
}
else
{
break;
}
}
}
objSqlCommand.CommandText = "UPDATE " + this.TableName + " SET " + SQL + " WHERE " + cust.PKName + " = @cusID AND PhoneNumber = " + "'" + "@phNum" + "'";
foreach (PropertyInfo PropertyItem in this.GetType().GetProperties())
{
if (!(PropertyItem.Name.ToString() == cust.PKName))
{
if (PropertyItem.Name.ToString() != "TableName")
{
objSqlCommand.Parameters.AddWithValue("@" + PropertyItem.Name.ToString(), PropertyItem.GetValue(this, null));
}
else
{
break;
}
}
}
objSqlCommand.Parameters.AddWithValue("@cusID", cusID);
objSqlCommand.Parameters.AddWithValue("@phNum", this.PhoneNumber);
DAL.ExecuteSQL(objSqlCommand);
}
else
{
//AppEventLog.AddWarning("Primary Key is not provided for Update.")
}
}
catch (Exception ex)
{
//AppEventLog.AddError(ex.Message.ToString)
}
}
부분이 아래 : 코드 부분 이후 계속 읽어
UPDATE CustomerPhone SET PhoneTypeID = @PhoneTypeID, PhoneNumber = @PhoneNumber WHERE CustomerID = @cusID AND PhoneNumber = '@phNum'
@PhoneTypeID 및 @PhoneNumber 두 특성으로부터 받고있다. 우리는 사용자 입력 텍스트 상자에서 프레젠테이션 레이어의 이러한 속성에 값을 할당했습니다.
가 objSqlCommand.Parameters.AddWithValue("@cusID", cusID);
objSqlCommand.Parameters.AddWithValue("@phNum", this.PhoneNumber);
최종 코드는과 같아야 :
UPDATE CustomerPhone
SET PhoneTypeID = 7, PhoneNumber = 999444
WHERE CustomerID = 500 AND PhoneNumber = '911';
전화 유형 ID가 7
가objSqlCommand.Parameters.AddWithValue("@" + PropertyItem.Name.ToString(), PropertyItem.GetValue(this, null));
아래 코드 WHERE 값을 채우고, 아래 부분은 값을 가져 - 텍스트 상자에서 가져온 사용자 값 전화 번호는 999444입니다 - 텍스트 상자에서 가져온 사용자 값
위의 최종 업데이트 문은 SQL 환경에서 작동하지만 응용 프로그램을 통해 을 실행하면 execute 비 쿼리가 실행되어 0 행이 업데이트됩니다! 왜 그런지 궁금해?
내가 곧 길이 전화 번호, 솔루션을 확인합니다 내가라는 오류 얻을 다시 – peace
될 것입니다 .... 문자열입니다 ... 외래 키 제약 조건
UPDATE 문 충돌을
내가 업데이트하려고하는 테이블에는 두 개의 fk 열과 하나의 일반 열이 있습니다. 기본 키가 없습니다. – peace
CustomerID와 PhoneTypeID는 fuk의 – peace