каково различие между OLE DB и источниками данных ODBC?

Я попытаюсь объяснить все части функции стрелки, которые вы можете использовать.

const funcName = (parameters) => alert('message');

const funcName представляет имя функции & amp; что он неизменен, что вызывает ошибку, если вы пытаетесь переназначить его значение.

= (параметры) => alert ('message');

присваивает funcName значение, сначала это скобка для всех аргументов функции, стрелка используется вместо ключевого слова function перед скобкой и оповещение («сообщение»); это JavaScript, который вы хотите запустить. Ваш код JavaScript может быть длиннее & amp; тогда вы можете использовать скобки {}.

Рабочий пример:

<img src="assets/images/logo.svg" id="logo" onclick="alertPlay('play')">

const alertPlay = (message) => alert(message);
168
задан Martin08 19 September 2008 в 15:52
поделиться

3 ответа

Согласно ADO: объекты данных ActiveX , книге Джейсона Т. Роффа, опубликованной O'Reilly Media в 2001 году (отличная диаграмма здесь), он говорит именно то, что сказал MOZILLA.

(прямо со страницы 7 этой книги)

  • ODBC предоставляет доступ только к реляционным базам данных
  • OLE DB предоставляет следующие возможности
    • Доступ к данным независимо от их формата или местоположения.
  • Полный доступ к источникам данных ODBC и драйверам ODBC

Таким образом, может показаться, что OLE DB взаимодействует с источниками данных на основе SQL ЧЕРЕЗ уровень драйвера ODBC.

alt text

I Я не уверен на 100%, что это изображение правильное. Два соединения, в которых я не уверен, - это ADO.NET через ADO C-api и OLE DB через ODBC к источнику данных на основе SQL (потому что в этой диаграмме автор не помещает доступ к OLE DB через ODBC, что я считаю ошибкой).

143
ответ дан 23 November 2019 в 20:56
поделиться

You can use GetBuffer function to get the character buffer from CString.

--121 --- 3854704--

Вызов System.gc ничего не делает, потому что нечего собирать. Когда поток запускается, он увеличивает счетчик ссылок на потоки, если этого не сделать, поток будет прерываться неопределенно. Когда метод run потока завершается, то счетчик ссылок потока уменьшается.

while (true) {
    // just a simple demo, not useful code.
    // 0 0 - the first number is thread reference count, the second is abq ref count
    final ArrayBlockingQueue<Integer> abq = new ArrayBlockingQueue<Integer>(2);
    // 0 1
    final Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                abq.take();
                // 2 2
            } catch (final InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
    // 1 1
    t.start();
    // 2 2 (because the run calls abq.take)
    // after end of loop
    // 1 1 - each created object's reference count is decreased
}

Теперь существует потенциальное состояние гонки - что, если основной цикл завершается и выполняет сборку мусора до того, как поток t сможет выполнить какую-либо обработку, т.е. он приостановлен ОС до выполнения оператора abq.take? Метод run попытается получить доступ к объекту abq после того, как GC выпустил его, что было бы плохо.

Чтобы избежать состояния гонки, вы должны передать объект в качестве параметра методу выполнения. Я не уверен насчет Java в эти дни, это было давно, поэтому я d предлагает передать объект в качестве параметра конструктора классу, производному от Runnable . Таким образом, перед вызовом метода run есть дополнительная ссылка на abq, что гарантирует, что объект всегда действителен.

--121 --- 4650026--

Я видел подчеркивание, используемое как закрытые функции, и видел подчеркивание как глобальные функции. Также подчеркивание используется для обозначения глобальных переменных внутри самого PHP.

$_POST $_GET $_SESSION etc..

Это просто соглашение об именах, поэтому я спросил бы автора, есть ли он рядом.

--121 --- 2545588--

ODBC: - Только для реляционных баз данных (Sql Server, Oracle и т. Д.)

OLE DB: - Для реляционных и нереляционных баз данных. (Oracle, Sql-Server, Excel, необработанные файлы и т. Д.)

55
ответ дан 23 November 2019 в 20:56
поделиться

Вот мое понимание (неавторизованное):

ODBC - это технологически независимый открытый стандарт, поддерживаемый большинством поставщиков программного обеспечения. OLEDB is a technology-specific Microsoft's API from the COM-era (COM was a component and interoperability technology before .NET)

At some point various datasouce vendors (e.g. Oracle etc.), willing to be compatible with Microsoft data consumers, developed OLEDB providers for their products, but for the most part OLEDB remains a Microsoft-only standard. Now, most Microsoft data sources allow both ODBC and OLEDB access, mainly for compatibility with legacy ODBC data consumers. Also, there exists OLEDB provider (wrapper) for ODBC which allows one to use OLEDB to access ODBC data sources if one so wishes.

In terms of the features OLEDB is substantially richer than ODBC but suffers from one-ring-to-rule-them-all syndrome (overly generic, overcomplicated, non-opinionated).

In non-Microsoft world ODBC-based data providers and clients are widely used and not going anywhere.

Inside Microsoft bubble OLEDB is being phased out in favor of native .NET APIs build on top of whatever the native transport layer for that data source is (e.g. TDS for MS SQL Server).

42
ответ дан 23 November 2019 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: