在现代软件开发中,数据库连接和操作是任何应用程序的核心部分。本文将介绍如何在 .NET 环境下,使用 Npgsql 驱动连接 KaiwuDB,并执行基本的数据库操作,包括创建表、插入数据和查询操作。我们假设您已经安装并配置好了 KaiwuDB 数据库,并且熟悉基本的数据库操作。
1. 前提条件
在开始之前,确保以下环境已经准备好:
安装 .NET 6.0 和 Visual Studio C# 2022:确保您已经安装了 .NET 6.0 SDK 和 Visual Studio 2022。可以从 微软官方网站 下载并安装。
安装和运行 KaiwuDB:您需要确保 KaiwuDB 数据库已经正确安装并运行,同时完成基本的配置,包括数据库认证方式。
数据库用户:创建一个具有表级及以上操作权限的用户。
2. 创建 .NET 控制台项目
首先,我们需要创建一个 .NET 控制台应用程序,来实现与 KaiwuDB 的连接操作。在命令行中,运行以下命令:
dotnet new console -o kaiwudb-test-app
该命令将会在 kaiwudb-test-app
目录下创建一个新的控制台应用程序。进入该目录:
cd kaiwudb-test-app
3. 安装 Npgsql 包
接下来,您需要安装用于连接 PostgreSQL 数据库的 Npgsql 驱动。运行以下命令来安装 Npgsql 包:
dotnet add package Npgsql
4. 编辑 Program.cs 文件
在项目目录中,找到自动生成的 Program.cs
文件,替换其内容为以下示例代码:
using System;
using System.Data;
using System.Net.Security;
using Npgsql;
namespace Example
{
class MainClass
{
static void Main(string[] args)
{
var connStringBuilder = new NpgsqlConnectionStringBuilder();
connStringBuilder.Host = "172.18.139.126"; // 数据库主机地址
connStringBuilder.Port = 26257; // KaiwuDB 的端口
connStringBuilder.Username = "test"; // 数据库用户名
connStringBuilder.Password = "123"; // 数据库密码
connStringBuilder.Database = "bank"; // 使用的数据库名称
// 调用方法执行数据库操作
Simple(connStringBuilder.ConnectionString);
}
static void Simple(string connString)
{
using (var conn = new NpgsqlConnection(connString))
{
conn.Open();
// 创建 "accounts" 表
using (var cmd = new NpgsqlCommand("CREATE TABLE IF NOT EXISTS accounts (id INT PRIMARY KEY, balance INT)", conn))
{
cmd.ExecuteNonQuery();
}
// 插入两行数据到 "accounts" 表
using (var cmd = new NpgsqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "UPSERT INTO accounts(id, balance) VALUES(@id1, @val1), (@id2, @val2)";
cmd.Parameters.AddWithValue("id1", 1);
cmd.Parameters.AddWithValue("val1", 1000);
cmd.Parameters.AddWithValue("id2", 2);
cmd.Parameters.AddWithValue("val2", 250);
cmd.ExecuteNonQuery();
}
// 查询并输出 "accounts" 表中的余额
Console.WriteLine("Initial balances:");
using (var cmd = new NpgsqlCommand("SELECT id, balance FROM accounts", conn))
using (var reader = cmd.ExecuteReader())
while (reader.Read())
Console.Write("\taccount {0}: {1}\n", reader.GetValue(0), reader.GetValue(1));
// 创建时间序列数据库
using (var cmd = new NpgsqlCommand("CREATE TS DATABASE db_TimeSeries", conn))
{
cmd.ExecuteNonQuery();
}
// 创建时间序列表
using (var cmd = new NpgsqlCommand("CREATE TABLE db_TimeSeries.table1 " +
"(k_timestamp timestamp NOT NULL, " +
"voltage double, " +
"current double, " +
"temperature double " +
") TAGS ( " +
"number int NOT NULL) " +
"PRIMARY TAGS(number) " +
"ACTIVETIME 3h; ", conn))
{
cmd.ExecuteNonQuery();
}
// 向时间序列表插入数据
using (var cmd = new NpgsqlCommand("INSERT INTO db_TimeSeries.table1 " +
"VALUES ( " +
"'2024-07-01 10:00:00', " +
"220.0, 3.0, 20.5, " +
"123); ", conn))
{
cmd.ExecuteNonQuery();
}
// 查询并输出时间序列表的数据
Console.WriteLine("Data from time series table db_TimeSeries.table1:");
using (var cmd = new NpgsqlCommand("SELECT * from db_TimeSeries.table1", conn))
using (var reader = cmd.ExecuteReader())
while (reader.Read())
Console.Write("\tTime: {0}\tvoltage: {1}\tcurrent: {2}\ttemperature: {3}\tnumber: {4}\n",
reader.GetValue(0), reader.GetValue(1), reader.GetValue(2), reader.GetValue(3), reader.GetValue(4));
}
}
}
}
上述代码实现了以下操作:
连接到 KaiwuDB 数据库。
创建一个名为
accounts
的表,并插入两行数据。查询
accounts
表中的数据并输出。创建时间序列数据库
db_TimeSeries
。创建时间序列表,并插入一条时间序列数据。
查询并输出时间序列表的数据。
5. 检查项目文件
确保 kaiwudb-test-app.csproj
文件中包含了 Npgsql 依赖项。检查或手动修改项目文件如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>kaiwudb_test_app</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Npgsql" Version="8.0.3" />
</ItemGroup>
</Project>
6. 运行程序
在终端中执行以下命令来运行程序:
dotnet run
程序将会连接 KaiwuDB,执行创建表、插入数据、查询数据等操作,并在控制台输出相关信息。
7. 输出结果
运行结果将显示账户余额和时间序列数据。以下是一个示例输出:
Initial balances:
account 1: 1000
account 2: 250
Data from time series table db_TimeSeries.table1:
Time: 2024-07-01 10:00:00 voltage: 220.0 current: 3.0 temperature: 20.5 number: 123
总结
通过使用 Npgsql 驱动,您可以轻松地在 .NET 环境中连接 KaiwuDB,并执行各种数据库操作。本文展示了如何进行数据库连接、创建表、插入数据和查询操作,为开发者提供了一个清晰的参考示例。在实际应用中,您可以根据自己的需求扩展功能,进行更复杂的数据操作。