Spec-Zone.ru › MySQL Connectors 1.0

2.1 Пример подключения к базе данных

Код, необходимый для подключения к хранилищу документов MySQL, очень похож на традиционный код подключения к MySQL, но теперь приложения могут устанавливать логические сессии для экземпляров сервера MySQL, работающих с плагином X. Сессии создаются фабрикой mysqlx, а возвращенные сессии могут инкапсулировать доступ к одному или нескольким экземплярам сервера MySQL, работающим с плагином X. Приложения, использующие объекты Session по умолчанию, могут быть развернуты как на установках с одним сервером, так и на кластерах баз данных без изменений кода.

Создайте сеанс X DevAPI, используя метод mysqlx.getSession(connection). Вы передаете параметры подключения для подключения к серверу MySQL, такие как имя хоста и имя пользователя, очень похожим образом на код в одном из классических API. Параметры подключения могут быть указаны как строка типа URI, например user:@localhost:33060, или как словарь данных, например {user: myuser, password: mypassword, host: example.com, port: 33060}. См. для получения дополнительной информации.

Пользовательская учетная запись MySQL, используемая для подключения, должна использовать плагин аутентификации mysql_native_password или caching_sha2_password, см. . Сервер, к которому вы подключаетесь, должен иметь включенные защищенные подключения, которые являются по умолчанию в MySQL 8.0 и более поздних версиях. Это гарантирует, что клиент использует механизм паролей X Protocol PLAIN, который работает с учетными записями пользователей, использующими любой из плагинов аутентификации. Если вы пытаетесь подключиться к экземпляру сервера, на котором не включены защищенные подключения, для учетных записей пользователей, использующих плагин аутентификации mysql_native_password, сначала пытается использовать MYSQL41, а для учетных записей пользователей, использующих caching_sha2_password, происходит откат к SHA256_MEMORY.

Следующий пример кода показывает, как подключиться к серверу MySQL и получить документ из коллекции my_collection, у которого поле name начинается с L. Пример предполагает, что существует схема под названием test и существует коллекция my_collection. Чтобы пример работал, замените user своим именем пользователя и password своим паролем. Если вы подключаетесь к другому хосту или через другой порт, измените хост с localhost на ваш и порт с 33060 на ваш.

Код MySQL Shell JavaScript

var mysqlx = require('mysqlx');

// Connect to server on localhost
var mySession = mysqlx.getSession( {
                host: 'localhost', port: 33060,
                user: 'user', password: 'password' } );

var myDb = mySession.getSchema('test');

// Use the collection 'my_collection'
var myColl = myDb.getCollection('my_collection');

// Specify which document to find with Collection.find() and
// fetch it from the database with .execute()
var myDocs = myColl.find('name like :param').limit(1).
        bind('param', 'L%').execute();

// Print document
print(myDocs.fetchOne());

mySession.close();

Код MySQL Shell Python

from mysqlsh import mysqlx

# Connect to server on localhost
mySession = mysqlx.get_session( {
        'host': 'localhost', 'port': 33060,
        'user': 'user', 'password': 'password' } )

myDb = mySession.get_schema('test')

# Use the collection 'my_collection'
myColl = myDb.get_collection('my_collection')

# Specify which document to find with Collection.find() and
# fetch it from the database with .execute()
myDocs = myColl.find('name like :param').limit(1).bind('param', 'L%').execute()

# Print document
document = myDocs.fetch_one()
print(document)

mySession.close()
    

Код Node.js JavaScript

var mysqlx = require('@mysql/xdevapi');

// Connect to server on localhost
mysqlx
  .getSession({
    user: 'user',
    password: 'password',
    host: 'localhost',
    port: '33060'
  })
  .then(function (session) {
    var db = session.getSchema('test');
    // Use the collection 'my_collection'
    var myColl = db.getCollection('my_collection');
    // Specify which document to find with Collection.find() and
    // fetch it from the database with .execute()
    return myColl
      .find('name like :param')
      .limit(1)
      .bind('param', 'L%')
      .execute(function (doc) {
        console.log(doc);
      });
  })
  .catch(function (err) {
    // Handle error
  });

Код C#

// Connect to server on localhost
var mySession = MySQLX.GetSession("server=localhost;port=33060;user=user;password=password;");

var myDb = mySession.GetSchema("test");

// Use the collection "my_collection"
var myColl = myDb.GetCollection("my_collection");

// Specify which document to find with Collection.Find() and
// fetch it from the database with .Execute()
var myDocs = myColl.Find("name like :param").Limit(1)
	.Bind("param", "L%").Execute();

// Print document
Console.WriteLine(myDocs.FetchOne());

mySession.Close();

Код Python

import mysqlx

# Connect to server on localhost
my_session = mysqlx.get_session({
     'host': 'localhost', 'port': 33060,
     'user': 'user', 'password': 'password'
 })

my_schema = my_session.get_schema('test')

# Use the collection 'my_collection'
my_coll = my_schema.get_collection('my_collection')

# Specify which document to find with Collection.find() and
# fetch it from the database with .execute()
docs = my_coll.find('name like :param').limit(1).bind('param', 'L%').execute()

# Print document
doc = docs.fetch_one()
print(doc)

my_session.close()
    

Код Java

import com.mysql.cj.xdevapi.*;

// Connect to server on localhost
Session mySession = new SessionFactory().getSession("mysqlx://localhost:33060/test?user=user&password=password");

Schema myDb = mySession.getSchema("test");

// Use the collection 'my_collection'
Collection myColl = myDb.getCollection("my_collection");

// Specify which document to find with Collection.find() and
// fetch it from the database with .execute()
DocResult myDocs = myColl.find("name like :param").limit(1).bind("param", "L%").execute();

// Print document
System.out.println(myDocs.fetchOne());

mySession.close();

Код C++

#include <mysqlx/xdevapi.h>

// Scope controls life-time of objects such as session or schema

{
  Session sess("localhost", 33060, "user", "password");
  Schema db= sess.getSchema("test");
  // or Schema db(sess, "test");

  Collection myColl = db.getCollection("my_collection");
  // or Collection myColl(db, "my_collection");

  DocResult myDocs = myColl.find("name like :param")
                           .limit(1)
                           .bind("param","L%").execute();

  cout << myDocs.fetchOne();
}

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/x-devapi-userguide-en/database-connection-example.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API