namespace 教程上的数据连接访问例子
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
SqlConnection thisconnection = new SqlConnection(@"Data Source=PC2010041617aem;InitialCatalog=phonebook;Integrated Security=True;Pooling=False");
thisconnection.Open();//连接数据库,并打开 SqlDataAdapter thisadapter = new SqlDataAdapter("select * from maintele",thisconnection); SqlCommandBuilder thisbuilder = new SqlCommandBuilder(thisadapter); DataSet thisdataset = new DataSet(); thisadapter.Fill(thisdataset,"maintele");
label1.Text = Convert.ToString(thisdataset.Tables["maintele"].Rows[3]["tele"]); thisdataset.Tables["maintele"].Rows[3]["tele"] = "18978952645";
thisadapter.Update(thisdataset, "maintele");
/*上面这句报错“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。”
这是什么原因*/
label2.Text = Convert.ToString(thisdataset.Tables["maintele"].Rows[3]["tele"]);
thisconnection.Close();}
}
}
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
SqlConnection thisconnection = new SqlConnection(@"Data Source=PC2010041617aem;InitialCatalog=phonebook;Integrated Security=True;Pooling=False");
thisconnection.Open();//连接数据库,并打开 SqlDataAdapter thisadapter = new SqlDataAdapter("select * from maintele",thisconnection); SqlCommandBuilder thisbuilder = new SqlCommandBuilder(thisadapter); DataSet thisdataset = new DataSet(); thisadapter.Fill(thisdataset,"maintele");
label1.Text = Convert.ToString(thisdataset.Tables["maintele"].Rows[3]["tele"]); thisdataset.Tables["maintele"].Rows[3]["tele"] = "18978952645";
thisadapter.Update(thisdataset, "maintele");
/*上面这句报错“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。”
这是什么原因*/
label2.Text = Convert.ToString(thisdataset.Tables["maintele"].Rows[3]["tele"]);
thisconnection.Close();}
}
}
使用SqlCommandBuilder自动生成DataAdapter
为了支持自动生成,指定的SelectCommand必须包含主键或唯一性列。 如果没有无法生成InsertCommand,UpdateCommand,和DeleteCommand,并会抛出InvalidOperation异常。
的 代码示例 1:自动生成的命令说明
1、手工设置Insert、Update、Delete命令
2、拖一个SqlDataAdapter到窗体上,用向导生成Update逻辑
3、用SqlCommandBuilder来自动生成:
SqlCommandBuilder sqlCmBuilder=new SqlCommandBuilder(sqlDa);
使用这个方法要注意,用SqlCommandBuilder自动生成更新逻辑后,如果修改SqlDataAdapter的SelectCommand,会有问题。