2016-09-16 3 views
0

다음은 Insert에서 작동하는 코드입니다. 값 및 where 절 구문을 사용하여 Update로 변환하는 데 도움이 필요합니다.올바른 MS SQL Update 문 구문 C#과 ADODB.Parameters?

구문 :MSDN

Update YourTable 
Set Column = Value 
Where Condition 

cmdInsert.CommandText = "Update ExchangeTypes Set MarketSelectionId = VALUE 
Where MarketSelectionId = '?' "; 
+0

SQL 주입 공격에 취약 할 수 있습니다. –

답변

1

ADODB 고대하고 사용되지 않는 당신 칸 업데이트를 다음과 같은 테이블

ADODB.Command cmdInsert = new ADODB.Command(); 
cmdInsert.ActiveConnection = conn; 

cmdInsert.CommandText = "INSERT INTO ExchangeTypes(MarketSelectionId) VALUES (?)"; 

//Update statement to be modelled: 
//cmdUpdate.CommandText = "Update ExchangeTypes SET 
//LayOdds = '" & layOdds & "'" & ", 
//Size='" & laySize & "' WHERE 
//MarketId='" & marketid & "'" and SelectionId='" & selectionid & "'" 

cmdInsert.CommandType = ADODB.CommandTypeEnum.adCmdText; 

// Append the parameters 
ADODB.Parameter paramMS = cmdInsert.CreateParameter(
      "MarketSelectionId",       // Parameter name 
      ADODB.DataTypeEnum.adVarChar,    // Parameter type (adVarChar) 
      ADODB.ParameterDirectionEnum.adParamInput, // Parameter direction 
      200,           // Max size 
      umarketiduselectionid);      // Parameter value 

      cmdInsert.Parameters.Append(paramMS); 

      object nRecordsAffected = Type.Missing; 
      object oParams = Type.Missing; 
      cmdInsert.Execute(out nRecordsAffected, ref oParams, 
      (int)ADODB.ExecuteOptionEnum.adExecuteNoRecords); 
+0

대단히 감사합니다. Joel. 내가 프로그래밍 한 마지막 시간은 15 년 전 이었지만이 기술에 대해서도 알 수 있습니다. 귀하의 추천에 따라 ADO.Net에 대한 연결을 변경합니다. 매우 감사. – user6063812

+0

내가 실제로하려고하는 것은 테이블을 반복하고 ID 목록을 사용하여 JSON 문자열을 작성하고 40 회 반복 할 때마다 JSON 요청을 보내고 세부 정보가있는 where 절과 함께 업데이트를 사용하여 반환 된 40 개의 JSON 항목을 처리하는 것입니다. 반환 된 JSON 요청 40 개에 포함되어 있습니다. 그리고 40 개의 레코드가 모두 반복됩니다. 2 개의 쿼리가 필요하다는 것을 알고 있습니다. 하나는 루프에 대한 고유 한 선택이고 다른 하나는 업데이트입니다. 선택을 완료 한 것처럼 기본 윤곽을 제공 할 수 있습니까? 코드에 구문 오류가 발생합니다. 따라서 더 익숙한 ADODB를 사용하십시오. – user6063812

+0

일부 가져 오기가 누락되었을 가능성이 있습니다 (예 : system.data, system.data.sqlclient). –

1

. 오래된 vb6 시대 코드와의 호환성을 위해서만 존재합니다. 새 코드에는 NEVER을 사용해야합니다.

using (var conn As new SqlConnection("connection string here")) 
using (var cmd As new SqlCommand("INSERT INTO ExchangeTypes(MarketSelectionId) VALUES (@MarketSelectionId)", conn) 
{ 
    cmd.Parameters.Add("@MarketSelectionId", SqlDbType.VarChar, 200).Value = umarketiduselectionid; 

    conn.Open(); 
    cmd.ExecuteNonQuery(); 
} 

을 다음 UPDATE 쿼리는 다음과 같이 보일 것이다 :

대신 삽입이 사용 ADO.Net을 시도 당신이 무언가를 구축하기 시작하는 것처럼이 보이는

using (var conn As new SqlConnection("connection string here")) 
using (var cmd As new SqlCommand("Update ExchangeTypes SET LayOdds = @LayOdds, Size = @LaySize WHERE MarketId= @MarketId AND SelectionId = @SelectionID ", conn) 
{ 
    //Guessing at your column types/lengths here 
    cmd.Parameters.Add("@LayOdds", SqlDbType.VarChar, 200).Value = layOdds; 
    cmd.Parameters.Add("@LaySize", SqlDbType.Int).Value = laySize; 
    cmd.Parameters.Add("@MarketId", SqlDbType.Int).Value = marketid; 
    cmd.Parameters.Add("@SelectionId", SqlDbType.Int).Value = selectionid; 

    conn.Open(); 
    cmd.ExecuteNonQuery(); 
} 
+0

사미 감사합니다. 나는 큰 걸음 앞으로 나아가고있다. 그러나 연결의 선택에 내 경험이없는 것처럼 보이고 더 현대적인 옵션으로 변경해야합니다. – user6063812