winform客户端:                        string sqlSer = "insert into user_log(类型,用户名,最新登陆时间,说明) values (\'" + dtyuan.Rows[i]["类型"].ToString() + "\',\'" + dtyuan.Rows[i]["用户名"].ToString() + "\',\'" + dtyuan.Rows[i]["最新登陆时间"].ToString() + "\',\'" + dtyuan.Rows[i]["说明"].ToString() + "\') ";
                        DataSet ds = ts.GetDataset(sqlSer);
                        oledb.Fill(ds);webservice服务端: Connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+targetFile+";Persist Security Info=False";
        //string ser_sql = "select * from user_log";
        OleDbConnection MyConn = new OleDbConnection(Connstr);
        
        try
        {
            MyConn.Open();          
           // OleDbDataAdapter MyCommand = new OleDbDataAdapter(ser_sql, MyConn);    
            OleDbCommand Mycmd = new OleDbCommand(SQL, MyConn);            
            Mycmd.ExecuteNonQuery();          
            DataSet ds = new DataSet();                   
           // MyCommand.Fill(ds);
            MyConn.Close();
            return ds;           
        }
        catch (Exception ex)
        {
            throw ex;
        }错误截图:

解决方案 »

  1.   

    找点数据库操作的文章好好看看
    DataSet ds = new DataSet();                   
    // MyCommand.Fill(ds);
    MyConn.Close();
    return ds;new了个啥都没有的dataset返回回去干嘛啊,再说也不是command.fill这么个用法啊,另外数据库字段能不用中文就不要用了,打起来不累啊
      

  2.   

    那我这么用可以更新webservice的数据库啊.数据库是别人开发的软件生成的,我无法改啊.
      

  3.   

    string sqlSer = "insert into user_log(类型,用户名,最新登陆时间,说明) values (\'" + dtyuan.Rows[i]["类型"].ToString() + "\',\'" + dtyuan.Rows[i]["用户名"].ToString() + "\',\'" + dtyuan.Rows[i]["最新登陆时间"].ToString() + "\',\'" + dtyuan.Rows[i]["说明"].ToString() + "\') ";
    这么多斜杠是不是准备转义的? 如果是,都去掉,单引号不需要转义,加了 \ 反而会出问题
      

  4.   

    我们自己找开发人员首先看有没有这样的编程素质:当他拼写的sql中写出用单引号分隔的字符串的时候,他自然就会提出问题“如果内容中出现单引号怎么办?”的问题,用不着别人强迫他去注意这个问题。素质一般的,说两三次也就记住了。
      

  5.   

    找到方法了:http://www.cnblogs.com/dabao0312/