2017-04-06 4 views
1

내 솔루션 용 DatabaseManager 클래스를 만들고 있는데 텍스트를 업데이트하려고 할 때 숫자가 0입니다. 예를 들면 : 나는 지금 michael이라는 이름을 가지고 있으며 그것을 "michael, mike"로 바꾸고 싶습니다. 아마 업데이트를 사용할 것입니다.C# SQL : params로 업데이트 - 텍스트가 0이고 텍스트가없는 경우

public void AddCrime(CSteamID id, string crime, string time) 
{ 
    try 
    { 
     MySqlConnection connection = createConnection(); 
     MySqlCommand command = connection.CreateCommand(); 
     crime = "," + crime; 
     command.CommandText = "update `" + Main.Instance.Configuration.Instance.DatabaseTableName 
      + "` set `crime` = crime + (@crime) where `steamId` = @steamID; select `crime` from `" 
      + Main.Instance.Configuration.Instance.DatabaseTableName 
      + "` where `steamId` = @steamID"; 
     command.Parameters.AddWithValue("@steamID", id); 
     command.Parameters.AddWithValue("@crime", crime); 
     connection.Open(); 
     command.ExecuteNonQuery(); 
     connection.Close(); 
     AddTime(id, time); 
    } 
    catch (Exception ex) { Logger.Log(ex); } 
} 

어떻게 호출 않습니다

DatabaseManager.AddWanted(player.CSteamID, command[1], command[2]); 

감사합니다 여러분!

+0

안녕하세요. 코드에 대해 더 자세히 살펴 보겠습니다. 고맙습니다! –

+0

데이터베이스 유형? ODBC/oledb/데이터베이스 특정 드라이버? – bradbury9

+0

@RobLang 코드가 업데이트되었습니다. –

답변

1

마지막 명령문은 select 문이며 NonQuery은 값을 반환하지 않고 영향을받는 행 수만 반환합니다. 변수를 ExecuteScalar으로 변경하고 select의 값을 변수에 저장하십시오.

두 번째 오류는 @steamID의 데이터 형식입니다. 당신이 값 id이 ... CStreamIdstring하지 CSteamID id 같이 AddWithValue

+0

시도하고 당신을 업데이 트됩니다. –

+0

아니요, 여전히 같은 버그. –

+0

두 가지 오류가 있습니다. a) select 명령문의 값을 저장하십시오. 'var crimeValue = command.ExecuteScalar();' – bradbury9

0

고정 변경 선언 설정, 나는 테이블에서 범죄를 얻을 수있는 다른 방법을 추가 한 후 현재 문자열로 무효 범죄 문자열을 변경 +를 표 텍스트.

오류 : 잘못된 DOUBLE 값이 잘리지 않았습니다.