簡體   English   中英

C# WPF DataGrid 連接到 SQLite 數據庫

[英]C# WPF DataGrid connecting to a SQLite database

我是 C# 和 WPF 的新手,因此非常感謝您的幫助。

我無法讓 WPF 網格連接到 SQLite 數據庫並顯示其數據。 我只是在沒有任何數據的情況下顯示網格。

空白數據網格

Home.xaml 上的 Datagrid 代碼:

    <DataGrid Name="DataGridHome" Margin="10,66,242,185" Grid.Row="2" Grid.Column="0" AutoGenerateColumns="False" CanUserAddRows="False"
          CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False"
          CanUserResizeRows="False" CanUserSortColumns="False" SelectionMode="Single" SelectionChanged="DataGrid_SelectionChanged">
        <DataGrid.Columns>
            <DataGridTextColumn Header="id" Visibility="Hidden"/>
            <DataGridTextColumn Header="Surname" FontFamily="Arial"/>
            <DataGridTextColumn Header="First Name" FontFamily="Arial" />
            <DataGridTextColumn Header="DoorNum" FontFamily="Arial"/>
            <DataGridTextColumn Header="StreetName" FontFamily="Arial"/>
            <DataGridTextColumn Header="StreetName2" FontFamily="Arial"/>
            <DataGridTextColumn Header="City" FontFamily="Arial"/>
            <DataGridTextColumn Header="PostCode" FontFamily="Arial"/>
            <DataGridTextColumn Header="Belt" FontFamily="Arial"/>
            <DataGridTextColumn Header="AccountType" FontFamily="Arial"/>
            <DataGridTextColumn Header="JoinDate" FontFamily="Arial"/>
            <DataGridTextColumn Header="MembershipActive" FontFamily="Arial"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

App.config 代碼(我的數據庫沒有任何用戶名或密碼):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <connectionStrings>
  <add connectionString="Data Source=MemberDB.db; Initial Catalog=Pubs;" name="ConString"/>
  </connectionStrings>
 </configuration>

C# 代碼 Home.xaml.cs :

using System;
using System.Windows;
using System.Windows.Controls;
using System.Data;
using System.Data.SqlClient;
using System.Data.SQLite;
using System.IO;

namespace KarateClub
{
/// <summary>
/// Interaction logic for Home.xaml
/// </summary>
public partial class Home : Page
{
    public Home()
    {
        InitializeComponent();
        DataBaseConnection();
    }

    private void DataBaseConnection()
    {
        try
        {
            SQLiteConnection sqlite = new SQLiteConnection("Data Source=MemberDB.db; Version=3;");

            SQLiteCommand sqlcmd;
            sqlite.Open();
            sqlcmd = sqlite.CreateCommand();
            string query = "SELECT * FROM Members";
            sqlcmd.CommandText = query;
            SQLiteDataAdapter sda = new SQLiteDataAdapter(sqlcmd);
            DataTable dt = new DataTable("Members");
            sda.Fill(dt);
            DataGridHome.ItemsSource = dt.DefaultView;
            sqlite.Close();

        }
        catch(SQLiteException ex)
        {
            Console.WriteLine("SQLite DataBase Error!");
        }

    }
    ....

我認為 App.config 或我在 C# 代碼中與數據庫的連接一定有問題。 我不知道 App.config 中的 name="ConString" 應該如何與 C# 代碼一起使用來訪問 SQLite。

這在網上很難研究——有些人使用 Dapper,其他人使用 ADO.NET,那些與我有類似代碼的人不是使用 DataGrid,而是使用簡單的列表視圖。

謝謝 :)

您可以嘗試在Data Source 中提供完整的文件路徑。 通過調試,驗證sda變量是否具有來自數據庫的所需值。

您可以在此處找到有效的 SQL Lite 連接字符串列表。

數據網格連接到列表 -> 這是您需要做的:

  1. 創建一個表示數據庫中對象的類(例如 Person)
  2. 列一個清單(列出人員)
  3. 建立數據庫連接(我建議 Dapper)
  4. 用對象(人)填寫列表(例如人)
  5. 將 Datagrid 綁定到列表

一個很好的教程: https : //www.c-sharpcorner.com/UploadFile/009464/how-to-bind-datagrid-in-wpf-using-C-Sharp/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM