c#中,这个错误是怎么回事

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:02:16
错误是:对于不返回任何键列信息的selectcommand,不支持updatecommand的动态sql生成

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 WindowsApplication1
{
public partial class sexStudent : Form
{
DataSet dataSet = new DataSet("myschool");
SqlDataAdapter dataAdapter;

public sexStudent()
{
InitializeComponent();
}

private void sexStudent_Load(object sender, EventArgs e)
{
string sql = "select loginname,username,sex,state from table_user";
dataAdapter = new SqlDataAdapter(sql,user.connection);

dataAdapter.Fill(dataSet,"user");
this.dataGridView1.DataSource=dataSet.Tables[&

string sql = "select loginname,username,sex,state from table_user";

这里返回了数据库的主键了吗?不只是表有主键就行的,必须要你返回的时候返回了主键。

--------------------
TO 楼上的楼上:你不懂啥叫全局变量还是没看到
TO 楼上:那两句是将DataSet中数据的修改同步到数据库的意思。

dataAdapter没有创建呢
你new的在form load里面 load执行完就释放了
在button2里面 它还是一个null值吧?

首先在定义时:
DataSet dataSet = new DataSet();//假设myuser是你数据库中要更新的表
SqlDataAdapter dataAdapter= new DataAdapter();

然后就行了吧?

2楼:
不需要自己写updatecommand
因为定义了SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
可以直接dataAdapter.update() 自动生成sql 文进行处理

this.dataGridView1.DataSource=dataSet.Tables["user"];

这里应该写成
this.dataGridView1.DataSource=dataSet.Tables["user"].DefaultView;

如果不行在说

SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(dataSet, "user");

我是初学者 想问一下 这两行是修改数据的意思