C# DataGridView 时出现的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:11:38
修改更新时,出现错误
“对于不返回任何键列信息的 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 zuoye8
{
public partial class Money : Form
{
private DataSet dataSet = new DataSet(); //申明并初始化DataSet
private SqlDataAdapter dataAdaper; //声明 DataAdaper

public Money()
{
InitializeComponent();
}

private void Money_Load(object sender, EventArgs e)
{

string sql = "select yongtu,money from Money";

//初始化 DataAdaper
dataAdaper = new SqlDataAdapter(sql, DBHelper.connection);

表里面有没有键,在数据库表中加入主键,当然选择表的时候,主键也要选出来.没有主键无法自动生成update语句,就没法更新.
"对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成"
说明没有主键,"select yongtu,money from Money"要改.比如你更新一个记录
"update table set xxx=xxx where primaykey=xxxx",没有主键相当于没有后面的where primaykey=xxxx 怎么知道更新哪一条记录呢?当然这里SQL语句是自动生成的.

SqlCommandBuilder builder = new SqlCommandBuilder(dataAdaper);
dataAdaper.Update(dataSet, "Money");
因为dataAdaper里面的select语句不是select *,改成select *就可以了
或者把PRIMARY KEY那一列添进去,不然没发确定是哪行
如果数据库中这个表没有主键的话,要么加个主键,要么就只能自己写UPDATE语句了

绑定数据源时候
dgvMoney.DataSource = dataSet.Tables["Money"];
改成
dgvMoney.DataSource = dataSet.Tables["Money"].DefaultView;
试试

你是运行就出错,还是点击哪里的时候出错?