[오류 1] SqlServer에서 오류 메시지 표시: OleDbException 스칼라 변수를 선언해야 합니다.
현재 저는 Oledb를 사용하여 SqlServer를 작동하기 위해 .net을 사용하지만 설명할 수 없이 항상 "스칼라 변수를 선언해야 합니다..."라고 보고합니다. 코드에서 다음 두 가지 방법을 채택했지만 소용이 없습니다.
방법 1: OleDbParameter[] p = new OleDbParameter[] {
새로운 OleDbParameter("@aa",1),
새로운 OleDbParameter("@bb","shelley"),
새로운 OleDbParameter("@cc",DateTime.Now)
};
Objcmd.Parameters.AddRange(p);
방법 2: OleDbParameter pp;
pp = new OleDbParameter("@aa",OleDbType.Integer);
pp.값 = 1;
Objcmd.Parameters.Add(pp);
pp = new OleDbParameter("@bb", OleDbType.LongVarChar);
pp.Value = "셸리";
Objcmd.Parameters.Add(pp);
pp = new OleDbParameter("@cc", OleDbType.Date);
pp.Value = DateTime.Now;
Objcmd.Parameters.Add(pp); 어떻게 작성하든 "스칼라 변수 @aa를 선언해야 합니다"라는 메시지가 표시됩니다. 마지막 이유는 다음 문장입니다. OleDbCommand Objcmd("insert into test (a, b,c) 값(@aa,@bb,@cc)", Objconn);올바른 쓰기: OleDbCommand Objcmd = new OleDbCommand("테스트 (a,b,c)값(?,?,?)에 삽입", Objconn);이렇게 해서 정상적으로 통과되었습니다. [오류 2] Sybase에서 오류 메시지가 표시됩니다. 이 인터페이스는 지원되지 않습니다(HRESULT:0x80004002(E_NOINTERFACE)에서 예외 발생).net은 SQL 문에서 동일한 매개 변수가 여러 번 사용될 수 있으므로 Oledb를 사용하여 Sybase를 작동합니다. 다음과 같이:
OleDbCommand Objcmd = new OleDbCommand("업데이트 테스트 세트 a=@aa where a=@aa ", Objconn);
OleDbParameter[] p = 새로운 OleDbParameter[] {
새로운 OleDbParameter("aa",1),
새로운 OleDbParameter("aa",1)
};
Objcmd.Parameters.AddRange(p);
Objconn.Open();
Objcmd.ExecuteNonQuery();
Objconn.Close(); 위 코드는 "이 인터페이스는 지원되지 않습니다(예외는 HRESULT: 0x80004002 (E_NOINTERFACE))"라는 오류 메시지를 표시합니다. 문제의 원인은 매개변수에 동일한 이름이 두 개 있기 때문입니다. 이 경우 매개변수 하나만 작성하면 됩니다. 변경 사항은 다음과 같습니다.
OleDbCommand Objcmd = new OleDbCommand("업데이트 테스트 세트 a=@aa where a=@aa ", Objconn);
OleDbParameter[] p = 새로운 OleDbParameter[] {
새로운 OleDbParameter("aa",1)
};또는
OleDbCommand Objcmd = new OleDbCommand("업데이트 테스트 세트 a=@aa where a=@aa2 ", Objconn);
OleDbParameter[] p = 새로운 OleDbParameter[] {
새로운 OleDbParameter("aa",1),
새로운 OleDbParameter("aa2",1)
};【요약】
SqlServer 및 Sybase를 지원해야 하는 프로그램을 작성하는 경우 이 점에 특별한 주의를 기울여야 합니다.
1.SqlServer는 "?"를 매개변수 자리 표시자로 사용해야 하며, 이는 동일한 매개변수가 사용되더라도 매개변수를 여러 번 추가해야 합니다.
2. Sybase가 동일한 매개변수를 여러 번 사용하는 경우 매개변수를 여러 번 추가할 수 없습니다. 그렇지 않으면 오류가 보고됩니다.
http://www.cnblogs.com/shelley/archive/2010/05/25/1743438.html