2012-05-07 2 views
0

다음 코드를 시도합니다.SQL 서버에서 테이블을 업데이트하십시오.

String sym=request.getParameter("symbol"); 
Statement st1=con.createStatement(); 
String symIns="UPDATE "+tblname+" SET Symbol='+sym+'"; 
int m=st1.executeUpdate(symIns); 
if(m==0) 
    out.println("m is zero"); 
else 
if(m!=0) 
    out.println("Inserted"); 

I는 0으로 m 인쇄 따라서 테이블을 갱신되지 않은 코드를 실행 한 후 이전과 page.But에서 SYM tblname의 값을 수신하고있다. 이 코드는 레코드가없는 테이블 (Null 값만 포함)에서는 작동하지 않습니다. 그러나 그것에 몇 가지 기록이있는 테이블을 위해 일하고 있습니다. 또한 데이터베이스에서 직접 실행하려고했습니다. query executed successfully을 표시하지만 메시지는 (0 row(s) affected)으로 표시됩니다. 이것은 데이터베이스에서 성공적으로 실행중인 쿼리입니다. '

업데이트 6 SET SYMBOL ='eq 'WHERE SYMBOL ='be ';

내가 말한 것처럼이 테이블을 위해이 테이블은 SYMBOL 컬럼의 값이 '있어야'합니다.

+0

질문을 많이 추가 : 오류/경고가 있습니까? 다른 쿼리가 작동합니까? 'tblname'이 데이터베이스에 있습니까? 'tblname' 테이블에 레코드가 있습니까? DB 연결에 명시 적'COMMIT'이 필요하지 않습니까? –

+0

이것은 SQL 주입에 널리 사용됩니다. 대체 솔루션을 고려해야 할 수도 있습니다. – Arion

+0

데이터베이스에서 직접 실행하는 것보다 콘솔에서 문자열 symIn을 인쇄 해보십시오. – Maddy

답변

0

쿼리가 올바르게 작동합니다. 일치하는 레코드가 있으면 행을 업데이트합니다.

따라서 UPDATE six SET SYMBOL='eq' WHERE SYMBOL='be'; 쿼리에서 필드 값이 'be'인 행이있는 six 테이블을 업데이트합니다. 그러나 NULL이있는 위치는 업데이트되지 않습니다.

쿼리는 실행되지만 레코드를 업데이트하지 않으므로 영향을받지 않는 0 행을 반환합니다.

필드 값으로 NULL이 포함 된 행을 업데이트하려는 경우.

IS NULL

UPDATE six SET SYMBOL='eq' WHERE SYMBOL IS NULL

+0

그래도 여전히 동일한 메시지 (0 행 영향을 받음)와 쿼리가 성공적으로 실행되었음을 보여줍니다. – user1358548

+0

테이블에'SYMBOL' 필드에 널 값이 들어 있지 않음을 의미합니다. 나는 네가하고 싶은 것을 얻지 못하고 있니? –

+0

사실 새 테이블을 만들고 있습니다. 이제 모든 필드에 널값을 표시합니다. 테이블을 업데이트하고 코드에 표시된 값을 설정하려고합니다. – user1358548

관련 문제