各位大侠,我是初学者,在做批量更新时,如果查询语句是这样子的 select code,codename from xxxx 是没有问题的。
但如果是select code,rtrim(codename) codename from xxxx 就没有报任何错。但刷新后看到的结果还是没有更新。

解决方案 »

  1.   

    select code,rtrim(codename) codename from xxxx 
    select code,codename from xxxx 你在查询分析器里执行一下有没有区别,不就是codename去掉左边的空格?
      

  2.   

    RTRIM函數是截断所有尾随空格后返回一个字符串。另外一个用处就是可把数值型变为字符串型
      

  3.   

    源码:
     public partial class Form1 : Form
        {
            //声明一个公共的dt
            DataTable dt=null;
            string strconn = string.Empty;
            //声明一个公共的sql文本变量,查询和更新都通过这个来联通数据库
            string sqltext = string.Empty;        public Form1()
            {
                InitializeComponent();
                //初始化变量
                dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                strconn = "server=.;uid=sa;pwd=;database=zjtssoft";
                //下面这样子可以更新
                sqltext = "select wage_code,wage_name from wagetao";
                //如果像下面这样子就不能批量更新了。界面上显示是更新了,但重新取数据再绑定一下就还是原来的
                sqltext = "select wage_code,rtrim(wage_name) wage_name from wagetao";
                //加载数据
                GetDate();
            }        private void GetDate()
            {
                using (SqlConnection conn = new SqlConnection(strconn))
                {
                    SqlDataAdapter sda = new SqlDataAdapter(sqltext, conn);
                    //这里名为dt的Datatable必须是公共的
                    dt = new DataTable();
                    sda.Fill(dt);
                    //绑定datagridview
                    dataGridView1.DataSource = dt;
                    //绑定文本框
                    tB1.DataBindings.Clear();
                    tB1.DataBindings.Add("text", dt, "wage_code");
                    tB2.DataBindings.Clear();
                    tB2.DataBindings.Add("text", dt, "wage_name");
                }
            }
            private void btnAlter_Click_1(object sender, EventArgs e)
            {
                using (SqlConnection conn = new SqlConnection(strconn))
                {
                    SqlDataAdapter sda = new SqlDataAdapter(sqltext, conn);
                    SqlCommandBuilder scb = new SqlCommandBuilder(sda);
                    lock (this)
                    {
                        sda.Update(dt);
                    }
                    MessageBox.Show("更新成功");
                    GetDate();
                }
            }    }
      

  4.   

    最好的办法调试,跟踪一步步看变量值,这样才好排错, 首先你要看的是在获取gridview中当你输入新值后是否有获取到新值,插入的sql 语句中的参数是否是后来改变过的新值,如果是值在获取gridview的时候没有获取到新值, 如果不是的话然后带着这些去先去数据插入一条看看, 这样肯定能够解决问题的,  在获取gridview更新后的值时候新手是很容易犯这个错的。