【发布时间】:2020-04-14 23:33:19
【问题描述】:
我一直在线关注 C# .Net 教程。创建了一个class 并为我的DataAdapter 声明了变量Adapter1。
我正在使用带有 Adapter1 的 CommandBuilder 来更新、保存、删除或向数据库插入新记录。
我遇到的问题是我声明的UpdateDatabase 方法似乎看不到变量Adapter1。
请查看下面的代码并告诉我我做错了什么。导致错误的代码位于最底部
private string sql_string;
private string strCon; //This is a write-only property
public string Sql
{
set { sql_string = value; }
}
public string connection_string
{
set { strCon = value; }
}
public System.Data.DataSet GetConnection
{
get { return MyDataSet(); }
}
private System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
con.Open();
System.Data.SqlClient.SqlDataAdapter Adapter1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
Adapter1.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
public void UpdateDatabase (System.Data.DataSet ds)
{
System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(Adapter1);
cb.DataAdapter.Update(ds.Tables[0]);
}
【问题讨论】:
-
不要将数据提供者对象包装在“帮助”类中。而是专注于有效和正确地使用它们,其中包括参数化查询、利用连接池和处理所有应该做的事情。
-
问题是你在
MyDataSet方法的范围内声明了Adapter1。在UpdateDatabase方法中你使用Adapter1,但是在这个方法的范围内是无法访问的。 -
这是正确的。我将此声明移到大括号之外,现在一切都很好。感谢您的反馈。
标签: c# sql-server sqldataadapter sqlcommandbuilder