C# 将ODBC表绑定到WPF数据网格
我已经用DataGrid构建了一个WPF表单,并希望用ODBC数据库中的表填充它。我当前的代码似乎能够打开连接,但我无法将数据填充到DataGrid。谁能解释一下为什么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 { /// <
- TableName=公司
- DatabaseName=DBFS
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>