none
关于DataGridView与SQL数据集无法同步的问题 RRS feed

  • 问题

  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    
    namespace datas
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            SqlDataAdapter adapter = null;
            DataSet ds = new DataSet();
            private void Form1_Load(object sender, EventArgs e)
            {
                DataSet ds = new DataSet();
                string commandText = "select 号码=psnNo,姓名=psnName,性别=psnSex,年龄=psnAge,地址=psnAddress from Person";
                SqlConnection cn = new SqlConnection("server=.;database=master;uid=sa;pwd=jack");
                SqlDataAdapter adapter = new SqlDataAdapter(commandText, cn);
                adapter.Fill(ds, "dtPerson");
                this.dataGridView1.DataSource = ds.Tables[0];
            }
    
            private void btnSave_Click(object sender, EventArgs e)
            {
                SqlCommandBuilder sb = new SqlCommandBuilder(adapter);
                adapter.Update(ds.Tables[0]);
            }
        }
    }
    
    以上是我写的代码!运行的时候没有错误!就是当我要保存的时候出现找不到表之类的对话框!请各位MVP帮帮我!
    2009年8月8日 2:08

答案

  • 楼主的编程基础知识还需要继续加强啊。
    private void Form1_Load(object sender, EventArgs e)
            {
                DataSet ds = new DataSet();
                string commandText = "select 号码=psnNo,姓名=psnName,性别=psnSex,年龄=psnAge,地址=psnAddress from Person";
                SqlConnection cn = new SqlConnection("server=.;database=master;uid=sa;pwd=jack");
                SqlDataAdapter adapter = new SqlDataAdapter(commandText, cn);
                adapter.Fill(ds, "dtPerson");
                this.dataGridView1.DataSource = ds.Tables[0];
            }
    请把上面代码中加粗、斜体、下划线的类型去掉,直接使用在类中声明的变量。如果你在Form1_Load中重新声明了重名变量,则类中声明的变量将不起作用。,


    理解的越多,需要记忆的就越少
    2009年8月8日 5:05
    版主

全部回复

  • 楼主的编程基础知识还需要继续加强啊。
    private void Form1_Load(object sender, EventArgs e)
            {
                DataSet ds = new DataSet();
                string commandText = "select 号码=psnNo,姓名=psnName,性别=psnSex,年龄=psnAge,地址=psnAddress from Person";
                SqlConnection cn = new SqlConnection("server=.;database=master;uid=sa;pwd=jack");
                SqlDataAdapter adapter = new SqlDataAdapter(commandText, cn);
                adapter.Fill(ds, "dtPerson");
                this.dataGridView1.DataSource = ds.Tables[0];
            }
    请把上面代码中加粗、斜体、下划线的类型去掉,直接使用在类中声明的变量。如果你在Form1_Load中重新声明了重名变量,则类中声明的变量将不起作用。,


    理解的越多,需要记忆的就越少
    2009年8月8日 5:05
    版主
  • 我没有加粗、斜体、下划线的类型呀!
    2009年8月8日 7:32
  • 搂主,您好。版主的意思是将版主加粗的类型删除。

    不知您是否注意到,您声明的成员变量和局部变量名字相同。局部变量中做了无意义的重新声明,这是导致错误的根源。
    2009年8月8日 9:54
  •    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            SqlDataAdapter adapter = null;
            DataSet ds = new DataSet();
            private void Form1_Load(object sender, EventArgs e)
            {
                  ds = new DataSet();
                string commandText = "select 号码=psnNo,姓名=psnName,性别=psnSex,年龄=psnAge,地址=psnAddress from Person";
                SqlConnection cn = new SqlConnection("server=.;database=master;uid=sa;pwd=jack");
          adapter = new SqlDataAdapter(commandText, cn);
                adapter.Fill(ds, "dtPerson");
                this.dataGridView1.DataSource = ds.Tables[0];
            }

            private void btnSave_Click(object sender, EventArgs e)
            {
                SqlCommandBuilder sb = new SqlCommandBuilder(adapter);
                adapter.Update(ds.Tables[0]);
            }
    2009年8月8日 12:05