Вызов C ++ DLL Отправка соединения C # DB в качестве аргумента - PullRequest
0 голосов
/ 19 октября 2019

Я перенесу некоторый код из C # в C ++, и мне было интересно, могу ли я перенести существующее соединение из C #, где есть несколько простых пакетов соединений, в C ++ DLL для чтения и обработки результатов. Мое приложение подключается к 5 различным типам баз данных, но я упростил все после выполнения запроса, используя IDataReader для упрощения.

public static string OdbcExecuteQuery(OdbcConnection conn, string strQuery) {
    try {
        using (DbCommand com = new OdbcCommand(strQuery, conn)) {
                var dataResults = GenericReader(com);
        }
    }
    catch (Exception ex) {
    }
    conn.Close();
    return "Success";
}

public static string MySqlExecuteQuery(MySqlConnection MyConnection, string strQuery) {
    try {
        using (DbCommand com = new MySqlCommand(strQuery, MyConnection)) {
            var dataResults = GenericReader(com);         
        }
    }
    catch (Exception ex) {
    }
    MyConnection.Close();
    return "Success";
}

// This method will read the results from any established connection
public static string GenericReader(DbCommand com, DataTable rawData = null) {
    IDataReader reader = null;
    try {
        if (rawData == null){
            com.CommandTimeout = 300;
            using (reader = com.ExecuteReader()) {
                var dtSchema = reader.GetSchemaTable();
                rawData = QueryToDataTable(reader, dtSchema);
            }
        }
    }
    catch (Exception ex) {      
    }     

    return "Success";
}

Возможно ли установить соединение в C # и вызвать функцию, подобную GenericReader что есть в C ++ DLL? Я довольно новичок в C ++, и хотя я знаю, что вы можете передавать примитивы, такие как ints и strings, не уверен, что вы сможете это сделать.

...