c# - C# SelectCommand 属性在调用“填充”之前尚未初始化。在 WinForm 中
问题描述
我正在尝试使用 DB 数据以编程方式在我的 Windows 窗体中填充 DataGridView,但我显然做错了。
namespace UDDKT
{
public partial class Form2 : Form
{
SqlConnection connection;
string connectionString;
DataSet ds = new DataSet();
SqlDataAdapter DaDavaoci = new SqlDataAdapter();
SqlDataAdapter DaAkcije = new SqlDataAdapter();
public Form2()
{
InitializeComponent();
connectionString = ConfigurationManager.ConnectionStrings["UDDKT.Properties.Settings.UDDKTConnectionString"].ConnectionString;
}
public SqlCommand SlctDavaoci { get; private set; }
private void Form2_Load(object sender, EventArgs e)
{
PopuniDgDavaoci();
}
private void PopuniDgDavaoci()
{
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Davaoci", connection))
{
DaDavaoci.SelectCommand = SlctDavaoci;
DaDavaoci.Fill(ds, "TblDavaoci");
}
}
}
}
当我尝试运行它时,它会突出显示 DaDavaoci 并说: Exception Unhandled System.InvalidOperationException: '在调用 'Fill' 之前尚未初始化 SelectCommand 属性。
解决方案
您使用了错误的 SqlAdapter。
在顶部创建一个名为的适配器DaDavoci
:
SqlDataAdapter DaDavaoci = new SqlDataAdapter();
但是您没有传递 CommandText 也没有传递 Connection。
在底部创建一个名为adapter
(带有连接和命令文本)的新适配器。但是随后您再次从顶部使用适配器,它仍然没有命令文本,也没有连接。
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Davaoci", connection))
{
DaDavaoci.SelectCommand = SlctDavaoci;
DaDavaoci.Fill(ds, "TblDavaoci");
}
您应该使用您创建的适配器,其中包含一个命令文本和一个像这样的连接
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Davaoci", connection))
{
adapter.SelectCommand = SlctDavaoci;
adapter.Fill(ds, "TblDavaoci");
}
我不确切知道您要做什么,但我认为代码顶部的两个适配器的初始化没有意义(至少对我而言)。我不会将连接或适配器存储在类变量中,而是在需要时创建新的。(如果您使用 using-keyword,您创建的实例将在 using-scope 结束后被释放。因此,要么使用 using 并在需要它们的地方创建新实例,要么使其成为类变量而不使用 using)
推荐阅读
- google-apps-script - 从 Patreon 到 Google 表格的数据
- c - 如何访问动态分配的结构数组中的项目?
- reactjs - 在 reducer 中设置 redux 的初始状态
- terraform - 具有动态类型的 Terraform Provider Schema
- r - 将“丰富的”字符向量变异为表示其元素存在的多个变量
- css - iOS 上的动画 stroke-dashoffset
- postgresql - .Net Core API 无法返回结果,包括 System.Net.IPaddress
- javascript - 使用 redux 重新选择来规避未定义错误的读取属性的最佳方法是什么?
- javascript - 转换所选日期时出错 - Angular 8
- android - 在 Java 上创建位图并使用 JNI 将其发送到 C++ 并由 OpenGL 渲染,黑色