c# excel导入数据库的数据更新问题

(1)将exel数据导入数据库sqlserver2008中,同时显示在DataGridView中,这一步没有问题(2)在DataGridView中修改数据,点击按钮,数据... (1)将exel数据导入数据库sql server2008中,同时显示在DataGridView中,这一步没有问题
(2)在DataGridView中修改数据,点击按钮,数据库内中的数据也能随着更新,这一步有问题
点击按钮更新数据库的代码如下
private void button4_Click(object sender, EventArgs e)
{
//DataSet thisSet=new DataSet();

DataTable thisSet = new DataTable();
thisSet = (DataTable)dataGridView1.DataSource;
//thisSet.Tables.Add(dt.Copy());
SqlConnection thisConnection =new SqlConnection("Server=(local);Integrated Security=True;Database=ds");

SqlCommand thisCommand=new SqlCommand("Select id,name,sex,university from Table_3",thisConnection);
SqlDataAdapter thisAdapter=new SqlDataAdapter(thisCommand);
SqlCommandBuilder thisBuilder =new SqlCommandBuilder(thisAdapter);
thisConnection.Open();

// thisSet = dataGridView1.DataSource as DataSet;
//thisSet.Tables.Add((DataTable)dataGridView1.DataSource.);
thisAdapter.Fill(thisSet);

thisAdapter.Update(thisSet);
thisConnection.Close();
MessageBox.Show("Update Finished!");
}
错误提示为
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
查阅网上资料,说是数据库中的表未设置主键,但是id就是设置成主键的,不知道原因何在,忘各位高手不吝赐教,之处问题在哪,不甚感激!
被更新的表Table_3有主键id
展开
 我来答
阳光的雷咩咩
2014-12-18 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7767万
展开全部
  1. 被更新的表必须有主键。

  2. 你上面Fill方法上面注释两行是什么时候注释的,Fill后马上就update也没什么意义。

更多追问追答
追问
我最后运行的代码是上面贴出来的,被注释起来的语句是之前试的时候写的;
既然fill后马上update无意义,那么应该怎么改呢,我也是参考网上的写的,求指教
追答

看我写的:

    public partial class Form1 : Form
    {
        SqlDataAdapter da;
        DataTable dt = new DataTable();
        SqlCommandBuilder builder;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string strConn = @"data source=.;initial catalog=test;integrated security=true;";
            SqlConnection conn = new SqlConnection(strConn);

            da = new SqlDataAdapter("select [ID],[C] from TCmdBuilder", conn);
            SqlCommandBuilder builder = new SqlCommandBuilder(da);
            da.Fill(dt);
            dataGridView1.DataSource = dt;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            da.Update(dt);
            MessageBox.Show("OK");
        }
    }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式