是不是+" ' 这个中间有空格的原因?改一下,去掉空格 str = "INSERT INTO wcb(dep,names,ip,info)VALUES( '" + a + "', '" + b + "', '" + c + "', '" + d + "')"; 

解决方案 »

  1.   

    试一试这么写:
    private void add_Click(object sender, System.EventArgs e) 

    a=this.tbdep.Text.Replace("'","''"); 
    b= this.nametb.Text.Replace("'","''"); 
    c=this.iptb.Text.Replace("'","''"); 
    d=this.infoli.Text.Replace("'","''"); 
    if(b=="" ¦ ¦c=="" ¦ ¦d=="" ¦ ¦a=="") 
    {MessageBox.Show("请检查,数据没填完整!");} 
    else 

    str="INSERT INTO wcb(dep,names,ip,info) VALUES ( '"+a+" ', '"+b+" ', '"+c+" ', '"+d+" ')"; 
    MessageBox.Show("增加数据成功!"+str.ToString());} 
    jilu=0; 

      

  2.   

    建议使用参数化的方法,不要再拼SQL了,一个容易错,另外一个在数据库不同时还需要从写SQL代码.
      

  3.   

    错误信息是:
    System.Data.OleDb.OleDbException:Insert into 语句的语法错误.
    at System.Data.OleDb.Command.ExecteCommandTextErrorHanding(Int 32 hr)
    at System.Data.OleDb.Command.ExecteCommandTextForSingleResult(tagDBPARAMS dbParams,Object& executeResult)
    at System.Data.OleDb.Command.ExecteCommandText.....
      

  4.   

    sqlserver2000和Access数据库的语法格式,有些是不一样的,比如,你在sqlserver2000里可以insert 一个int型字段用引号insert tables (aa) values ('9'),但是在access中可能不能要引号。
    你可以在access中建立一个sql查询,类似sqlserver2000的查询分析器,来帮助你分析sql语法错误!
      

  5.   

    private void add_Click(object sender, System.EventArgs e)  
    {  
    a=this.tbdep.Text.Replace(" '"," ' '");  
    b= this.nametb.Text.Replace(" '"," ' '");  
    c=this.iptb.Text.Replace(" '"," ' '");  
    d=this.infoli.Text.Replace(" '"," ' '");  
    if(b=="" ¦ ¦c=="" ¦ ¦d=="" ¦ ¦a=="")  
    {MessageBox.Show("请检查,数据没填完整!!");}  
    else  
    {  
    str= "INSERT INTO wcb(dep,names,ip,info)VALUES( '" + a + "', '" + b + "', '" + c + "', '" + d + "')"; 
    MessageBox.Show("增加数据成功!"+str.ToString());}  
    jilu=0;  
    }应当就好用了试一试!  
      

  6.   

    str= "INSERT INTO wcb(dep,names,ip,info)VALUES(  '" + a + " ',  '" + b + " ',  '" + c + " ',  '" + d + " ')";  
     '" + a + " '   右边是不是多了一个空格?
      

  7.   

    设个断点试试?把这个sql语句丢到数据库里运行。再看错在哪?
      

  8.   

    用sql监视器就能捕捉到了!!
    或者用跟踪器!
      

  9.   

    OleDbCommand com2=new OleDbCommand("insert into wcb(dep,names,ip,info)values('11','11','11','ll')",constr)
    我直接加入SQL语句都不行,还是说语法有错!
    可以从数据库中读出数据显示出来,就是没法向其中添加数据\删除和修改数据!
      

  10.   

    insert into wcb(dep,names,ip,info)values( '11 ', '11 ', '11 ', 'll ')
    到数据库里操作下。
      

  11.   

    str="INSERT INTO wcb(dep,names,ip,info) VALUES( '"+a+" ', '"+b+" ', '"+c+" ', '"+d+" ')"; 
                                           ^
                   ”info)VALUES“我不知你这里有没有空格,还是Copy上来的时候才没有空格,这里应该有空格
    如果这样写应该是不会有错的:
    str="INSERT INTO wcb(dep,names,ip,info) VALUES( '"+a+"', '"+b+"', '"+c+"', '"+d+"')"; 
      

  12.   

    建议你设个断点,然后把得到的sql语句放在查询分析器里看.就知道那里不对了.
      

  13.   

    在access里 insert into 要 as 成另一个表
    str="INSERT INTO wcb(dep,names,ip,info)VALUES( '"+a+" ', '"+b+" ', '"+c+" ', '"+d+" ') as temp";
    就okey了。 
      

  14.   

    建立了一个c#和vb的讨论群,欢迎大家加入。欢迎高手!群号:47047449
      

  15.   

    我发现好像很不规范啊。。好多地方没空格。不会是直接COPY的吧无论错误是不是在格式上,先规范了再说。还有。你四个字段都是字符型吗?不过你SQL SERVER没问题。。你试试把'换成"",我记得两个数据库对字符的引号是有区别的。
      

  16.   

    是不是VALUES的问题
    SQL 对 插入的直具有自动转换功能 比如 你能在SQL里字段类型为 INT 的列里插入 ‘01’但在ACCESS里是报错误的