SqlCommandBuilder 报错
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace test1
{
public partial class Form1 : Form
{
private static DataSet dataSet = new DataSet();
private static SqlDataAdapter dataAdapter;
public Form1()
{
InitializeComponent();
}
private void stand()
{
string sql = "select name,address from a ";
dataAdapter = new SqlDataAdapter(sql, DBHelper.connection);
dataAdapter.Fill(dataSet,"test");
dataGridView1.DataSource = dataSet.Tables["test"];
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
stand();
}
private void button1_Click(object sender, EventArgs e)
{
/*dataSet.Tables["test"].Clear();
string sql = "select name,address,statue from a ";
switch (comboBox1.Text)
{
case "1":
sql=sql+" where statue=1";
break;
case "2":
sql = sql + " where statue=2";
break;
case "4":
sql = sql + " where statue=4";
break;
default:
break;}
dataAdapter.SelectCommand.CommandText = sql;
dataAdapter.Fill(dataSet,"test");
//dataGridView1.DataSource = dataSet.Tables["test"];
*/
}
private void button3_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(dataSet,"test");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
运行到dataAdapter.Update(dataSet,"test");报错
Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
之前没遇到这错误。我看了写法也没错。不知道哪里出错了
--------------------编程问答-------------------- dataAdapter.Update(dataSet,"test"); //很明显这个dataset是空的!!
--------------------编程问答-------------------- 怎么是空的?不是Fill了吗?
string sql = "select name,address from a ";
dataAdapter = new SqlDataAdapter(sql, DBHelper.connection);
dataAdapter.Fill(dataSet,"test");
dataGridView1.DataSource = dataSet.Tables["test"];
--------------------编程问答-------------------- 为UPDATECOMMAND动态生成的SQL语句不支持不返回包含主键字段信息的SELECTCOMMAND属性,SELECTCOMMAND属性的执行结果中所获取的字段必须包含主键,也就是数据库必须要有一个字段作为主键
主键必需 --------------------编程问答-------------------- Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
之前没遇到这错误。我看了写法也没错。不知道哪里出错了
很明显的提示说,
更新语句不支持查询SelectCommand 不返回任何键列信息
你的表没有主键
补充:.NET技术 , C#