C# 将ODBC表绑定到WPF数据网格

C# 将ODBC表绑定到WPF数据网格,c#,wpf,odbc,C#,Wpf,Odbc,我已经用DataGrid构建了一个WPF表单,并希望用ODBC数据库中的表填充它。我当前的代码似乎能够打开连接,但我无法将数据填充到DataGrid。谁能解释一下为什么 TableName=公司 DatabaseName=DBFS 这部分有效(最后注释掉部分)。WPF表单出现时没有错误: using System.Data.Odbc; using System.Windows; using System.Data; namespace DB_inspector { /// <

我已经用DataGrid构建了一个WPF表单,并希望用ODBC数据库中的表填充它。我当前的代码似乎能够打开连接,但我无法将数据填充到DataGrid。谁能解释一下为什么

  • TableName=公司
  • DatabaseName=DBFS
这部分有效(最后注释掉部分)。WPF表单出现时没有错误:

using System.Data.Odbc;
using System.Windows;
using System.Data;

namespace DB_inspector
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            OdbcConnection dbConnection = new OdbcConnection("Driver={Pervasive ODBC Client Interface};ServerName=0875;dbq=@DBFS;Uid=Master;Pwd=Password;");
            string strSql = "select * from COMPANY";
            dbConnection.Open();
            OdbcDataAdapter dadapter = new OdbcDataAdapter();
            dadapter.SelectCommand = new OdbcCommand(strSql, dbConnection);
            DataTable table = new DataTable("COMPANY");
            //dadapter.Fill(table);
            //this.DataGrid1.DataContext = table;
            //DataGrid1.ItemsSource = table.DefaultView;
            //dadapter.Update(table);
            dbConnection.Close();

        }
    }
}
使用System.Data.Odbc;
使用System.Windows;
使用系统数据;
名称空间数据库检查器
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
OdbcConnection dbConnection=newodbcconnection(“驱动程序={普及ODBC客户端接口};服务器名=0875;dbq=@DBFS;Uid=Master;Pwd=Password;”;
string strSql=“选择*来自公司”;
dbConnection.Open();
OdbcDataAdapter dadapter=新的OdbcDataAdapter();
dadapter.SelectCommand=newodbccommand(strSql,dbConnection);
数据表=新数据表(“公司”);
//数据填充(表格);
//this.DataGrid1.DataContext=table;
//DataGrid1.ItemsSource=table.DefaultView;
//数据更新(表);
dbConnection.Close();
}
}
}
这不起作用,它运行时没有出现错误,但在等待一段时间后,我甚至看不到WPF表单出现:

using System.Data.Odbc;
using System.Windows;
using System.Data;

namespace DB_inspector
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            OdbcConnection dbConnection = new OdbcConnection("Driver={Pervasive ODBC Client Interface};ServerName=0875;dbq=@DBFS;Uid=Master;Pwd=Password;");
            string strSql = "select * from COMPANY";
            dbConnection.Open();
            OdbcDataAdapter dadapter = new OdbcDataAdapter();
            dadapter.SelectCommand = new OdbcCommand(strSql, dbConnection);
            DataTable table = new DataTable("COMPANY");
            dadapter.Fill(table);
            this.DataGrid1.DataContext = table;
            DataGrid1.ItemsSource = table.DefaultView;
            dadapter.Update(table);
            dbConnection.Close();

        }
    }
}
使用System.Data.Odbc;
使用System.Windows;
使用系统数据;
名称空间数据库检查器
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
OdbcConnection dbConnection=newodbcconnection(“驱动程序={普及ODBC客户端接口};服务器名=0875;dbq=@DBFS;Uid=Master;Pwd=Password;”;
string strSql=“选择*来自公司”;
dbConnection.Open();
OdbcDataAdapter dadapter=新的OdbcDataAdapter();
dadapter.SelectCommand=newodbccommand(strSql,dbConnection);
数据表=新数据表(“公司”);
数据填充(表格);
this.DataGrid1.DataContext=table;
DataGrid1.ItemsSource=table.DefaultView;
数据更新(表);
dbConnection.Close();
}
}
}
App.xaml

<Application x:Class="DB_inspector.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:DB_inspector"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

XAML



XAML看起来像什么?你有多少张唱片?有很多唱片。大约900行,大约20列如果您从构造函数(即)得到错误,那么窗口将不会被构造,您将看不到窗口。在catch方法中添加带有异常的try catch。在中间放一个断点,然后逐步通过。看看会发生什么,不是我期待的XAML。能否显示DataGrid1所在的实际XAML。我使用了另一个ODBC驱动程序,我得到的结果没有任何问题。数据库中有900多个客户,将数据填充到DataGrid需要太长时间。
<Window x:Class="DB_inspector.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:Liinos_inspector"
        mc:Ignorable="d"
        Title="DB database inspector" Height="595.404" Width="1005.571">
    <Grid>
        <DataGrid x:Name="DataGrid1" HorizontalAlignment="Left" Height="478" Margin="10,76,0,0" VerticalAlignment="Top" Width="978"/>
        <Image HorizontalAlignment="Left" Height="41" Margin="829,15,0,0" VerticalAlignment="Top" Width="141" Source="logo_small.jpg"/>
        <TextBox HorizontalAlignment="Left" Height="31" Margin="10,25,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="489"/>
        <Button Content="Search" HorizontalAlignment="Left" Height="31" Margin="516,25,0,0" VerticalAlignment="Top" Width="133" Background="#FF73DA63" BorderBrush="{x:Null}" Foreground="White"/>

    </Grid>
</Window>