1

코드를 실행 한 후에 콘솔 로그 "완료"가 표시되고 데이터베이스에 업데이트 된 내용이 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?준비된 문이 mssql을 사용하는 노드 js에서 실행되지 않습니다

var pool = new sql.ConnectionPool(config); 
var ps = new sql.PreparedStatement(pool); 

ps.input('code', sql.VarChar); 
ps.input('hex', sql.VarChar); 

ps.prepare("UPDATE tHE_SetItem SET acPicture = CONVERT(varbinary(max), @hex, 2) WHERE acIdent = @code;", function(err) { 

    async.mapSeries(hexes, function(pair, next) { 

     ps.execute({code: pair.code, hex: pair.hex}, next); 

    }, function(err) { 

     ps.unprepare(function(err) { 

      console.log("Done!"); 

     }); 
    }); 
}); 
+1

'err'을 (를) 로깅 해 보셨습니까? 분명히 오류 콜백이 실행중인 것처럼 보이므로이를 시도하는 것이 좋습니다. – Script47

+0

@ Script47 젠장 ... 네 말이 맞아. 이것은 12 시간 연속으로 일하는 것에 대한 것입니다. 간단한 것들이 당신을 지나쳐갑니다. 머리를 때리는 데 감사드립니다. 이것은 내가 실제로'pool.connect()'와 연결하지 않는다는 것을 깨닫게합니다. – Ivan

+1

어, 쉬십시오, 일하는 것은 그렇게 중요하지 않습니다. – Script47

답변

0

으로는 의견에서 지적, 내가 실제로 연결을되지 않았 음을 다시 저를 통지 오류 콜백을, 왼쪽으로. 다음은 수정 된 코드입니다.

var pool = new sql.ConnectionPool(config); 
pool.connect().then(function(){ // <------------- This in particular 
    var i = 0; 
    var ps = new sql.PreparedStatement(pool); 
    ps.input('code', sql.VarChar); 
    ps.input('hex', sql.VarChar); 
    ps.prepare("UPDATE tHE_SetItem SET acPicture = CONVERT(varbinary(max), @hex, 2) WHERE acIdent = @code;", function(err) { 
     if(err) console.log(err); 
     async.mapSeries(hexes, function(pair, next) { 
      i++; 
      console.log(i + "/" + hexes.length + " " + Math.round(i/hexes.length * 100) + "% - " + pair.code); 
      ps.execute({code: pair.code, hex: pair.hex}, next); 
     }, function(err) { 
      if(err) console.log(err); 
      ps.unprepare(function(err) { 
       if(err) console.log(err); 
       console.log("Done!"); 
      }); 
     }); 
    }); 
}).catch(function (err) { 
    console.log(err); 
});