ODBC 연결을 통해 쿼리를 실행할 수있는 스크립팅 엔진이있는 응용 프로그램이 있습니다. ODBC 연결을 통한 실행 구분 문 .NET
우리는 최근이MySql.Data.MySqlClient.MySqlHelper.ExecuteDataset(conn,query)
을 사용하기 전의 지금이 사용자가 쿼리로 전달할 수 있습니다 MySql.Data.MySqlClient.MySqlScript(conn, query)
사용 구분 문을
수 있도록 수정 그래서 :
DELIMITER // CREATE PROCEDURE HelloWorld() SELECT "Hello World!"; // DELIMITER ; CALL HelloWorld();
일반적으로 ExecuteDataset은 구분 기호가 올바르게 처리되지 않으므로 예외를 throw하고 MySqlScript가이를 완벽하게 처리합니다.
이제 ODBC 연결을 사용할 때 문제가 발생합니다. 사용자는
DSN=testDB;
과 같은 것을 지정할 수 있으며 해당 DB에 대한 쿼리를 실행합니다. - 단 한 번에 완벽하게 작동하지만 구분 기호를 사용하여 위의 블록을 실행하려고 할 때 문제가 발생합니다. 제대로 처리되지 않습니다. 여기에 스 니펫이 있습니다. 우리가 실행하는 방법 ODBC :Case ScriptIssuedDatabaseQuery.QueryTypes.OdbcQuery Try Using odbcConn As New Data.Odbc.OdbcConnection(qtw.ScriptQuery.OdbcConnectionString) odbcConn.Open() If odbcConn.State = Data.ConnectionState.Open Then Using oc As New Data.Odbc.OdbcCommand(qtw.ScriptQuery.SqlQueryData, odbcConn) qtw.ScriptQuery.QueryScalarResult = oc.ExecuteScalar().ToString() ' this fails, using ExecuteNonQuery same qtw.ScriptQuery.IsResultGood = True ' If didn't throw exception - assume good End Using End If odbcConn.Close() 'redundant? End Using Catch ex As Exception myHost.LogErrorMessage("Script Engine: Error in ODBC query: " & ex.Message) End Try
나는 무엇이 있습니까? 나는 웹을 샅샅이 뒤지고 빈 손으로 왔으며, Odbc 클래스를 사용하여 몇 가지 다른 방법을 시도했다. 트랜잭션 클래스를 사용하여 시도했다.
정확히 어떤 방식으로 올바르게 처리되지 않습니까? –
@AndrewMorton 그것은 그것을 보이는 여러 문장으로 처리하고; (SQL 문에 대해 유효하지 않은 구문이 있음) 오류가 발생합니다. 이 동일한 쿼리는 SQLYog에서 잘 작동하거나 MySqlScript 클래스를 사용합니다. – Poat