代码如下:                //抛出错误
             try
                {
                  //数据库驱动
                string str = @"server=localhost;database=data;uid=root;pwd=;";
                //查询字符串
                string Query_sql = @"update client_data set client_title=@client_title,client_character=@client_character,client_intro=@client_intro,client_pro=@client_pro,client_prin=@client_prin,client_duty=@client_duty,client_http=@client_http,client_addtress=@client_add,client_tel=@client_tel,client_fox=@client_fox,client_post=@client_post,client_note=@client_note,client_email=@client_email where client_title='"+this.client_title.Text.ToString().Trim()+"'";
                //创建连接
                MySqlConnection conn = new MySqlConnection(str);
                //执行命令
                MySqlCommand Cmd = new MySqlCommand(Query_sql, conn);
                 //sql参数化
                MySqlParameter Spm = new MySqlParameter("@client_title", MySqlDbType.Text, 15);
                Spm.Value = client_title;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_character", MySqlDbType.Text, 15);
                Spm.Value = client_character;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_intro", MySqlDbType.Text, 15);
                Spm.Value = client_intro;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_pro", MySqlDbType.Text, 15);
                Spm.Value = client_pro;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_prin", MySqlDbType.Text, 15);
                Spm.Value = client_prin;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_duty", MySqlDbType.Text, 15);
                Spm.Value = client_duty;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_http", MySqlDbType.Text, 15);
                Spm.Value = client_http;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_add", MySqlDbType.Text, 15);
                Spm.Value = client_add;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_tel", MySqlDbType.Text, 15);
                Spm.Value = client_tel;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_fox", MySqlDbType.Text, 15);
                Spm.Value = client_fox;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_post", MySqlDbType.Text, 15);
                Spm.Value = client_post;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_note", MySqlDbType.Text, 15);
                Spm.Value = client_note;
                Cmd.Parameters.Add(Spm);
                Spm = new MySqlParameter("@client_email", MySqlDbType.Text, 15);
                Spm.Value = client_email;
                Cmd.Parameters.Add(Spm);
                //打开数据库连接
                conn.Open();
                //读取数据
                MySqlDataReader Reader = Cmd.ExecuteReader();
                MessageBox.Show("修改成功");
                 //释放资源和关闭数据库
                Reader.Dispose();
                Cmd.Dispose();
                conn.Close();                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                }
执行以上代码后,相关数据被清空,数据库里的值变为Null,难道哪里出错了?

解决方案 »

  1.   

    MySqlDataReader Reader = Cmd.ExecuteReader();是读取数据库的。
    你这里不是要读取,而是要修改。
      

  2.   

    执行以上代码后,相关数据被清空,数据库里的值变为Null,难道哪里出错了?============================================================
    只能说你的UPDATE语句是执行了,执行的结果就是UPDATE全部的记录都为NULL。
    跟踪一下SQL的UPDATE 语句,然后放入数据库里面运行一下,看看是否成功?
      

  3.   

    你传进去的值保证不为null吗.你可以使用SQL的跟踪工具来查看,向数据库执行了什么语句.
      

  4.   

    好象是你只传进去一个Spm吧,因为一初始化一个参数就要传进去吧,其实用参数数组停不错的。
      

  5.   

    不如先在SQLSERVER中建个procedure,调试好了,然后再说
      

  6.   

    SqlCommand对象的ExecuteReader();方法是连接读取数据库里面的数据,
    并占用数据库连接,
    你的SQL语句是UPDATE语句 怎么能用ExecuteReader();这个方法呢,
    应该用SQLCOMMAND的executenonequery()方法 返回受影响的行数
    也就是你更新的那个行数 这样你的UPDATE 语句才能被执行 数据库里面的值才能被修改啊!
      

  7.   

    我已经用executenonequery()这个方法,可是结果也是一样的.我怀疑是传值时有问题!
      

  8.   

    SqlCommand对象的ExecuteReader();方法是连接读取数据库里面的数据, 
    并占用数据库连接, 
    你的SQL语句是UPDATE语句 怎么能用ExecuteReader();这个方法呢, 
    应该用SQLCOMMAND的executenonequery()方法 返回受影响的行数 
    也就是你更新的那个行数 这样你的UPDATE 语句才能被执行 数据库里面的值才能被修改啊!