目次
1. テーブルを作成する
まず、新しいデータベース Test を作成し、次に新しいテーブル Users を作成します。フィールド名は下図のようになります。当面はテスト用なので、あまり多くの列名は必要ありません。ここでは、SQL Server と SQL Server 管理ツールのインストールについてはあまり紹介しません。以下の投稿を参照してください。
SQL Server 2019 インストール チュートリアル_Xiong Siyu のブログ-CSDN ブログ_データベース 2019 インストール チュートリアル
フィールド名は以下の通りです
マウスを右クリックして主キーを設定します
IDの横に鍵のようなアイコンが表示されれば設定成功です。
Ctrl + S を押して保存し、テーブル名を入力します。
データベースを更新すると、テーブルの下に作成したばかりのテーブルが表示されます。
2. テーブルにデータを追加する
ここでは SQL ステートメントを使用せず、エディターを使用して直接操作し、必要に応じてデータのいくつかの列を追加するだけです。
User テーブルを右クリックし、「上位 200 行の編集」を選択します。
ちょっとしたデータを追加するにはここをクリックしてください
これでテーブルへのデータの追加は完了です
3. 新しい C# プロジェクトを作成する
ここで新しい WPF プロジェクトを作成しましょう。インターフェイスにはボタンが 1 つだけあり、他には何もありません。
インターフェースコード:
<Window x:Class="Lathe.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Lathe"
mc:Ignorable="d" WindowStartupLocation ="CenterScreen"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
<Grid>
<Button Content="连接数据库" Width="100" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="32,39,0,0" Click="ConnectDatabase_OnClick" />
</Grid>
</Window>
インターフェイスロジック:
using Lathe.SqlServer;
using System;
using System.Data;
using System.Windows;
namespace Lathe
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
//连接数据库 点击事件
public void ConnectDatabase_OnClick(object sender, RoutedEventArgs e)
{
}
}
}
四、SqlServerHelper
SqlServerHelper クラスを追加します
コード:
using System.Data;
using System.Data.SqlClient;
namespace Lathe.SqlServer
{
internal class SqlServerHelper
{
/// <summary>
/// 连接字符串
/// </summary>
private string strconn = string.Empty;
public SqlServerHelper(string conn)
{
//读取配置文件
//strconn = ConfigurationManager.AppSettings["Conn"].ToString();
//strconn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
strconn = conn;
}
/// <summary>
/// 执行增删改SQL语句
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <returns></returns>
public int ExecuteNonQuery(string cmdText)
{
using (SqlConnection conn = new SqlConnection(strconn))
{
conn.Open();
return ExecuteNonQuery(conn, cmdText);
}
}
/// <summary>
/// 执行增删改SQL语句
/// </summary>
/// <param name="conn">SqlConnection</param>
/// <param name="cmdText">SQL语句<</param>
/// <returns></returns>
public int ExecuteNonQuery(SqlConnection conn, string cmdText)
{
int res;
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.CommandType = CommandType.Text;
res = cmd.ExecuteNonQuery();
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
}
return res;
}
/// <summary>
/// 执行查询SQL语句
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <returns></returns>
public DataTable ExecuteDataTable(string cmdText)
{
using (SqlConnection conn = new SqlConnection(strconn))
{
conn.Open();
return ExecuteDataTable(conn, cmdText);
}
}
/// <summary>
/// 执行查询SQL语句
/// </summary>
/// <param name="conn">SqlConnection</param>
/// <param name="cmdText">SQL语句</param>
/// <returns></returns>
private DataTable ExecuteDataTable(SqlConnection conn, string cmdText)
{
DataTable dt = new DataTable();
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
}
}
return dt;
}
/// <summary>
/// 执行查询SQL语句
/// </summary>
/// <param name="cmdText">SQL语句</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText)
{
using (SqlConnection conn = new SqlConnection(strconn))
{
conn.Open();
return ExecuteQuery(conn, cmdText);
}
}
/// <summary>
/// 执行查询SQL语句
/// </summary>
/// <param name="conn">SqlConnection</param>
/// <param name="cmdText">SQL语句</param>
/// <returns></returns>
public DataTable ExecuteQuery(SqlConnection conn, string cmdText)
{
DataTable dt = new DataTable();
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
using (SqlDataReader sdr = cmd.ExecuteReader())
{
dt.Load(sdr);
sdr.Close();
sdr.Dispose();
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
}
}
return dt;
}
}
}
5. データベースに接続します
インターフェースロジックコードを変更する
using Lathe.SqlServer;
using System;
using System.Data;
using System.Windows;
namespace Lathe
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private SqlServerHelper SqlServerHelpers;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
string conn = "server=.;dataBase=Test;uid=sa;pwd=123456";
SqlServerHelpers = new SqlServerHelper(conn);
}
//连接数据库 点击事件
public void ConnectDatabase_OnClick(object sender, RoutedEventArgs e)
{
string sql = "SELECT Names FROM Users";
DataTable dataTable = SqlServerHelpers.ExecuteQuery(sql);
if(dataTable != null)
{
//打印所有列名
string columnName = string.Empty;
for (int i = 0; i < dataTable.Columns.Count; i++)
{
//columnName += dataTable.Columns[i].ColumnName + " | ";
columnName += string.Format("{0}({1}) | ", dataTable.Columns[i].ColumnName, i);
}
Console.WriteLine(columnName);
Console.WriteLine("======================");
//打印每一行的数据
foreach (DataRow row in dataTable.Rows)
{
string columnStr = string.Empty;
foreach (DataColumn column in dataTable.Columns)
{
columnStr += row[column] + " | ";
}
Console.WriteLine(columnStr);
}
}
}
}
}
走る
このようにして、データベース内のデータが取得されます。
終わり