6.6 Учебное пособие: Базовые операции CRUD с Connector/NET
В данном учебном пособии приводятся инструкции для начала работы с MySQL в качестве хранилища документов с помощью MySQL Connector/NET.
Для получения информации о концепциях и дополнительных примерах использования см. Руководство пользователя X DevAPI.
Минимальные требования
MySQL Server 8.0.11 с включенным протоколом X
Connector/NET 8.0.11
Visual Studio 2013/2015/2017
world_xобразец базы данных
Импорт образца хранилища документов
Вместе с данными и JSON-коллекцией предоставляется скрипт MySQL. Образец содержит следующее:
-
Коллекция
countryinfo: Информация о странах мира.
-
Таблицы
country: Минимальная информация о странах мира.
city: Информация о некоторых городах этих стран.
countrylanguage: Языки, на которых говорят в каждой стране.
Чтобы установить world_x образец базы данных, выполните следующие действия:
Загрузите
world_x.zipс http://dev.mysql.com/doc/index-other.html.-
Извлеките архив установки в временную папку, например,
/tmp/.Распаковка архива приводит к двум файлам, один из которых называется
world_x.sql. -
Подключитесь к серверу MySQL с помощью MySQL Client, используя следующую команду:
$>
mysql -u root -pВведите свой пароль, когда будет запрошено. Может быть использован не-root аккаунт, если у него есть права на создание новых баз данных. Для получения дополнительной информации об использовании MySQL Client, обратитесь к ...
-
Выполните скрипт
world_x.sqlдля создания структуры базы данных и вставки данных следующим образом:mysql>
SOURCE /temp/world_x.sql;Замените
/temp/путем к файлуworld_x.sqlна вашем компьютере.
Добавление ссылок на необходимые DLL
Создайте новый проект консоли Visual Studio, нацеленный на .NET Framework 4.6.2 (или более позднюю версию), .NET Core 1.1 или .NET Core 2.0. Примеры кода в данном учебнике представлены на языке C#, но вы можете использовать любой .NET язык.
Добавьте ссылку в свой проект на следующие DLL:
MySql.Data.dllGoogle.Protobuf.dll
Импорт пространств имен
Импортируйте необходимые пространства имен, добавив следующие инструкции:
using MySqlX.XDevAPI;
using MySqlX.XDevAPI.Common;
using MySqlX.XDevAPI.CRUD;
Создание сессии
Сессия в X DevAPI — это высокоуровневое понятие сессии базы данных, отличное от работы с традиционными низкоуровневыми подключениями MySQL. Важно понимать, что эта сессия не такая, как традиционная сессия MySQL. Сессии объединяют одно или несколько фактических подключений MySQL.
Следующий пример открывает сессию, которую вы можете использовать для получения схемы и выполнения основных операций CRUD.
string schemaName = "world_x";
// Define the connection string
string connectionURI = "mysqlx://test:test@localhost:33060";
Session session = MySQLX.GetSession(connectionURI);
// Get the schema object
Schema schema = session.GetSchema(schemaName);
Поиск строки в коллекции
После создания сессии вы можете выполнить операцию поиска. Следующий пример использует созданный объект сессии:
// Use the collection 'countryinfo'
var myCollection = schema.GetCollection("countryinfo");
var docParams = new DbDoc(new { name1 = "Albania", _id1 = "ALB" });
// Find a document
DocResult foundDocs = myCollection.Find("Name = :name1 || _id = :_id1").Bind(docParams).Execute();
while (foundDocs.Next())
{
Console.WriteLine(foundDocs.Current["Name"]);
Console.WriteLine(foundDocs.Current["_id"]);
}
Вставка нового документа в коллекцию
//Insert a new document with an identifier
var obj = new { _id = "UKN", Name = "Unknown" };
Result r = myCollection.Add(obj).Execute();
Обновление существующего документа
// using the same docParams object previously created
docParams = new DbDoc(new { name1 = "Unknown", _id1 = "UKN" });
r = myCollection.Modify("_id = :Id").Bind("id", "UKN").Set("GNP", "3308").Execute();
if (r.AffectedItemsCount == 1)
{
foundDocs = myCollection.Find("Name = :name1|| _id = :_id1").Bind(docParams).Execute();
while (foundDocs.Next())
{
Console.WriteLine(foundDocs.Current["Name"]);
Console.WriteLine(foundDocs.Current["_id"]);
Console.WriteLine(foundDocs.Current["GNP"]);
}
}
Удаление конкретного документа
r = myCollection.Remove("_id = :id").Bind("id", "UKN").Execute();
Закрытие сессии
session.Close();
Полный пример кода
Следующий пример демонстрирует базовые операции, которые можно выполнить с коллекцией.
using MySqlX.XDevAPI;
using MySqlX.XDevAPI.Common;
using MySqlX.XDevAPI.CRUD;
using System;
namespace MySQLX_Tutorial
{
class Program
{
static void Main(string[] args)
{
string schemaName = "world_x";
string connectionURI = "mysqlx://test:test@localhost:33060";
Session session = MySQLX.GetSession(connectionURI);
Schema schema = session.GetSchema(schemaName);
// Use the collection 'countryinfo'
var myCollection = schema.GetCollection("countryinfo");
var docParams = new DbDoc(new { name1 = "Albania", _id1 = "ALB" });
// Find a document
DocResult foundDocs = myCollection.Find("Name = :name1 || _id = :_id1").Bind(docParams).Execute();
while (foundDocs.Next())
{
Console.WriteLine(foundDocs.Current["Name"]);
Console.WriteLine(foundDocs.Current["_id"]);
}
//Insert a new document with an id
var obj = new { _id = "UKN", Name = "Unknown" };
Result r = myCollection.Add(obj).Execute();
//update an existing document
docParams = new DbDoc(new { name1 = "Unknown", _id1 = "UKN" });
r = myCollection.Modify("_id = :Id").Bind("id", "UKN").Set("GNP", "3308").Execute();
if (r.AffectedItemsCount == 1)
{
foundDocs = myCollection.Find("Name = :name1|| _id = :_id1").Bind(docParams).Execute();
while (foundDocs.Next())
{
Console.WriteLine(foundDocs.Current["Name"]);
Console.WriteLine(foundDocs.Current["_id"]);
Console.WriteLine(foundDocs.Current["GNP"]);
}
}
// delete a row in a document
r = myCollection.Remove("_id = :id").Bind("id", "UKN").Execute();
//close the session
session.Close();
Console.ReadKey();
}
}
}
© 2025 Oracle
Licensed under the GPLv2 License.