暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

.NET驱动之Npgsql远程连接MogDB

原创 由迪 2023-10-27
244

原作者:陆凯

  • 引言
  • 环境准备
  • 配置实践
  • 实验总结

引言

MogDB是一款商业版关系型数据库管理系统,它提供了强大的功能和性能,可以满足各种企业级应用的需求。本文将介绍如何在.NET项目中使用Npgsql驱动配置数据源进行远程连接,通过Npgsql提供的一系列数据库接口完成数据库表的增删改查等基本操作

环境准备

虚拟机:VMware 17 pro
架构:x86_64
源端系统:windows 11
C#环境:SDK (https://dotnet.microsoft.com/en-us/download)
开发平台:vscode(https://code.visualstudio.com/docs/setup/setup-overview)
目标端数据库版本:MogDB 3.0.3

配置实践

1.安装vscode

官网下载vscode并安装,安装完成后可以通过下载扩展包chinese实现界面的汉化

image.png

2.C#扩展包安装

安装C#扩展包是为了让平台能够支持.NET项目的开发,通过左侧边栏快捷方式下载扩展包C#

image.png
image.png

3.安装SDK

官网下载.NET SDK并安装后,可以通过终端呼出dotnet

image.png

4.创建.NET项目

首先创建一个空文件夹NET_program作为项目文件夹,在vscode中选择打开该文件夹

image.png

使用快捷命令ctrl+shift+`打开终端,使用dotnet命令在这个打开的终端里面创建一个基础的控制台程序。

dotnet new console --name NET_program

image.png
点击“Program.cs”,vscode会自动安装OmniSharp插件
image.png

5.项目添加Npgsql驱动

dotnet add package Npgsql --version 6.0.10

image.png

6.数据库服务端配置

gs_om -t start

#白名单文件添加源端主机ip
gs_guc reload -N all -I all -h "host all all xx.xx.xx.xx/32 md5"

gs_guc reload -N all -I all -c "listen_addresses='*'"

#创建lukai用户
gsql>create user lukai with password 'Enmotech@123';
gsql>grant all privileges to lukai;

7.测试连接

编辑Program.cs文件

using Npgsql;

class Program
{
    static void Main(string[] args)
    {
        var cs = "Server=192.168.57.130;Port=15400;Username=lukai;Password=Enmotech@123;Database=postgres;SSL Mode=Disable;";
        
        using (var con = new NpgsqlConnection(cs))
        {
            con.Open();

            // 创建表
            CreateTable(con,"CREATE TABLE test_npgsql(id SERIAL PRIMARY KEY,info VARCHAR)");

            // 插入数据
            InsertData(con, "小磐");
            InsertData(con, "小维");
            InsertData(con, "小陆");
            InsertData(con, "小凯");

            // 查询数据
            var data = SelectData(con);
            foreach (var item in data)
            {
                Console.Write(item);
                Console.WriteLine();
            }

            // 更新数据
            UpdateData(con, 1, "新的数据");

            // 删除数据
            DeleteData(con, 2);

            // 查询数据
            var data_ = SelectData(con);
            foreach (var item in data_)
            {
                Console.Write(item);
                Console.WriteLine();
            }
        }
    }
    static void CreateTable(NpgsqlConnection con, string sql)
    {
        using (var cmd = new NpgsqlCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
        }
    }

    static void InsertData(NpgsqlConnection con, string info)
    {
        using (var cmd = new NpgsqlCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = "INSERT INTO test_npgsql(info) VALUES(@info)";
            cmd.Parameters.AddWithValue("info", info);
            cmd.ExecuteNonQuery();
        }
    }

    static List<string> SelectData(NpgsqlConnection con)
    {
        var data = new List<string>();

        using (var cmd = new NpgsqlCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM test_npgsql";

            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    data.Add(reader.GetInt32(0).ToString());
                    data.Add(reader.GetString(1));
                }
            }
        }

        return data;
    }

    static void UpdateData(NpgsqlConnection con, int id, string newData)
    {
        using (var cmd = new NpgsqlCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = "UPDATE test_npgsql SET info = @newData WHERE id = @id";
            cmd.Parameters.AddWithValue("newData", newData);
            cmd.Parameters.AddWithValue("id", id);
            cmd.ExecuteNonQuery();
        }
    }

    static void DeleteData(NpgsqlConnection con, int id)
    {
        using (var cmd = new NpgsqlCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = "DELETE FROM test_npgsql WHERE id = @id";
            cmd.Parameters.AddWithValue("id", id);
            cmd.ExecuteNonQuery();
        }
    }
}

保存后,在终端执行

dotnet run

image.png

实验总结

通过本次实验,成功使用Npgsql驱动连接MogDB数据库,并进行了表的数据操作,Npgsql提供了方便易用的API,使得在.NET平台上操作数据库变得简单高效。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论