首页 新闻 搜索 专区 学院

急!C#访问mysql的update报错

0
悬赏园豆:20 [已关闭问题] 关闭于 2013-09-05 07:34

代码粘贴如下:

for (int j = 0; j < row; j++)
            {

                //找出原始值
                string find_value = "select * from sensor_running where (date(dt) between str_to_date('2012-08-01', '%Y-%m-%d') and str_to_date('2012-08-07', '%Y-%m-%d')) and weekday(date(dt)) < 5 and (time(dt) = '23:30:00') and sub_id = " + id[j];
                DataSet ds_week_morning = new DataSet();
                DataTable dt_week_morning = new DataTable();
                MySqlDataAdapter da_week_morning = new MySqlDataAdapter(find_value,conn);
                da_week_morning.Fill(ds_week_morning,id[j].ToString());
                dt_week_morning = ds_week_morning.Tables[id[j].ToString()];
                for (int k = 0; k < dt_week_morning.Rows.Count; k++)
                {
                    //为凌晨的数据赋以与前一天深夜一样的值
                    string set_value = "UPDATE sensor_running SET value = " + dt_week_morning.Rows[k][1] + "WHERE sub_id = " + id[j] + " AND date(dt) = date_add(date(str_to_date('" + dt_week_morning.Rows[k][2].ToString() + "','%Y/%m/%d %H:%i:%d')), interval 2 day) and hour(dt) between 0 and 7";
                    MySqlCommand update = connectMySQL.getMySqlCommand(set_value, conn);
                    update.ExecuteNonQuery();
                    Console.Write("影响{0}行\n", update.ExecuteNonQuery());
                }
            }

运行程序时,update.ExecuteNonQuery();处报错:You have an error in your SQL syntax。但是将查询语句直接用于mysql时并没有出错,可以update。应该不是语法错误这么简单的问题,麻烦求问高手这个update错在哪里

Joyce-Lee的主页 Joyce-Lee | 初学一级 | 园豆:179
提问于:2013-01-27 10:14
< >
分享
所有回答(3)
0

你可以调试到那里,然后看看具体的异常,也有可能具体的异常被包括在里边了

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-27 12:54
0

你这样,先把你的sql语句拼好后打个断点

取出完整的语句放在mysql里执行一下看看是不是能执行

li-peng | 园豆:954 (小虾三级) | 2013-01-30 16:47
0

第一,检查一下你的update的表格里面的字段名称属性和你的sql语句对比,有没有不匹配问题,你说你的sql语句放到MySql命令行里面没问题,但是你要知道你在程序中使用的是id[j]、dt_week_morning.Rows[k][2].ToString()这样的变量,你怎么放进去的?给具体值吗,那你能保证变量写法没有错误吗,所以,好好检查这个;

第二,在我的印象里面,update.ExecuteNonQuery();有返回值的,返回 -1 表示没有对数据造成影响,返回 表示影响了表格N个记录;你可以调试,如果返回值为-1,不用想,一定是sql语句错了

第三,执行sql语句的方式不止一种,比如:

public DataTable query(string sql)
  {
   //server=127.0.0.1;
   DataTable dt=new DataTable();
   //DataRow dr;
   string connString = "server=127.0.0.1;uid=sa;pwd=;database=TJPTTC";
   SqlConnection conn = new SqlConnection(connString);
   SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
   adapter.Fill(dt);
   return dt;
  }

采用其他方式也可以。

  假设还是不行,那就问问你身边有经验的人帮你解决。

大卫david | 园豆:240 (菜鸟二级) | 2013-09-04 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册