Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接到SQLite数据库的C WPF DataGrid_C#_Sqlite_Datagrid - Fatal编程技术网

C# 连接到SQLite数据库的C WPF DataGrid

C# 连接到SQLite数据库的C WPF DataGrid,c#,sqlite,datagrid,C#,Sqlite,Datagrid,我是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" CanUser

我是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,而是简单的列表视图


谢谢:

您可以尝试在数据源中提供完整的文件路径。通过调试,验证sda变量是否具有来自数据库的必需值。

您可以找到有效的SQL Lite连接字符串列表。

datagrid连接到列表->这是您需要执行的操作:

创建一个表示数据库中对象的类,例如Person 列出某人的名单 建立一个数据库连接,我建议简洁 填写清单,例如,有物品的人 将Datagrid绑定到列表 好的教程:

您是否尝试过调试代码?datatable在这一行sda.Filldt;之后有行吗;?谢谢你的信息。是的,另一个选项是使用对象关系映射程序,如Dapper或ADO.NET。不过,我上面提到的直接使用数据库的方法应该仍然有效。我在看这个:谢谢,我需要学习更多关于VisualStudio中调试的知识。我试试看。