10bet网址
MySQL连接器/NET开发指南
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 1.3 mb
PDF (A4)- 1.3 mb


MySQL连接器/NET开发指南/连接器/净教程教程:使用Connector/NET进行基本CRUD操作

6.6教程:使用Connector/NET的基本CRUD操作

本教程将指导您如何开始使用MySQL Connector/NET作为文档存储。有关概念和其他用法示例,请参见X DevAPI用户指南

最低要求

  • MySQL服务器8.0.11启用X协议

  • 连接器/净8.0.11

  • Visual Studio 2013/2015/2017

  • world_x数据库sample

导入文档存储样例

MySQL脚本提供了数据和JSON集合。该示例包含以下内容:

  • 集合

    • countryinfo:关于世界各国的信息。

    • 国家:关于世界各国的最少信息。

    • 城市:关于这些国家的一些城市的信息。

    • 国家语言:每个国家使用的语言。

安装world_x数据库示例,遵循以下步骤:

  1. 下载world_x.ziphttp://dev.10bet靠谱mysql.com/doc/index-other.html

  2. 将安装存档解压缩到一个临时位置,例如/ tmp /

    解包存档会生成两个文件,其中一个文件名为world_x.sql

  3. 使用MySQL客户端连接到MySQL服务器,命令如下:

    $> mysql -u root -p

    在出现提示时输入密码。非root帐户可以使用,只要该帐户具有创建新数据库的权限。有关使用MySQL客户端的更多信息,请参见mysql - mysql命令行客户端

  4. 执行world_x.sql脚本创建数据库结构,并按如下方式插入数据:

    mysql >源/ temp / world_x.sql;

    取代/ temp /与路径world_x.sql在您的系统上存档。

向所需的dll添加引用

创建一个新的Visual Studio控制台项目,目标是。net Framework 4.5.2(或更高版本)、。net Core 1.1或。net Core 2.0。本教程中的代码示例是用c#语言显示的,但您可以使用任何。net语言。

在你的项目中添加一个引用到以下dll:

  • MySql.Data.dll

  • Google.Protobuf.dll

导入命名空间

通过添加以下语句导入所需的名称空间:

使用MySqlX.XDevAPI;使用MySqlX.XDevAPI.Common;使用MySqlX.XDevAPI.CRUD;

创建一个会话

X DevAPI中的会话是一个高级数据库会话概念,与使用传统的低级MySQL连接不同。重要的是要理解这个会话与传统的MySQL会话不同。会话封装一个或多个实际的MySQL连接。

下面的示例打开一个会话,您可以稍后使用该会话检索模式并执行基本的CRUD操作。

string schemaName = "world_x";//定义连接字符串string connectionURI = "mysqlx://test:test@localhost:33060";会话= MySQLX.GetSession(connectionURI);//获取模式对象schema schema = session.GetSchema(schemaName);

在集合中查找一行

在实例化会话之后,您可以执行一个查找操作。下一个例子使用了你创建的session对象:

//使用集合'countryinfo' var myCollection = schema.GetCollection("countryinfo");var docParams = new DbDoc(new {name1 = "阿尔巴尼亚",_id1 = "ALB"});//查找文档DocResult foundDocs = myCollection。Find("Name =:name1 || _id =:_id1").Bind(docParams).Execute();while (foundDocs.Next()) {Console.WriteLine(foundDocs.Current["Name"]);Console.WriteLine (foundDocs.Current [" _id "]);}

向集合中插入新文档

//插入一个带有标识符的新文档var obj = new {_id = "UKN", Name = "Unknown"};结果r = myCollection.Add(obj).Execute();

更新现有文档

//使用之前创建的相同docParams对象docParams = new DbDoc(new {name1 = "Unknown", _id1 = "UKN"});r = myCollection。修改(“_id =: Id”)。绑定(“id”、“UKN”)。集(“大”,“3308”). execute ();if (r.AffectedItemsCount == 1) {foundDocs = myCollection. if (r.AffectedItemsCount == 1) {找到(“Name =: name1 | | _id =: _id1”).Bind (docParams) . execute ();while (foundDocs.Next()) {Console.WriteLine(foundDocs.Current["Name"]);Console.WriteLine (foundDocs.Current [" _id "]);Console.WriteLine (foundDocs.Current["国民生产总值"]);}}

删除特定文档

r = myCollection。Remove(“_id =: id”)。绑定(“id”、“UKN”)。Execute();

关闭会话

session.Close ();

完整的代码示例

下面的示例展示了可以对集合执行的基本操作。

使用MySqlX.XDevAPI;使用MySqlX.XDevAPI.Common;使用MySqlX.XDevAPI.CRUD;使用系统;命名空间MySQLX_Tutorial {class Program {static void Main(string[] args) {string schemaName = "world_x";string connectionURI = "mysqlx://test:test@localhost:33060";会话= MySQLX.GetSession(connectionURI);Schema = session.GetSchema(schemaName);//使用集合'countryinfo' var myCollection = schema.GetCollection("countryinfo");var docParams = new DbDoc(new {name1 = "阿尔巴尼亚",_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(); } } }