string  sql="insert into note(name,make,num,shin,rein,earn,btime,etime,etc) values('"+TextBox1.Text.ToString()+"','"+TextBox2.Text.ToString()+"','"+TextBox3.Text.ToString()+"','"+TextBox6.Text.ToString()+"','0','0','"+TextBox4.Text.ToString()+"','"+TextBox5.Text.ToString()+"','"+TextBox7.Text.ToString()+"')";
表段都是对了的。但是始终无法通过调试,报错是INSERT INTO语句语法错误。OleDbCommand mycm=new OleDbCommand(sql,myc);//myc是正确的。连接数据库的。

mycm.ExecuteNonQuery();//这行出错出错信息 System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。
我用的ACCESS数据库。

解决方案 »

  1.   

    断点,把sql值拿到sql查询分析器上看正确否
      

  2.   

    查看一下:
    btime  etime
    兩個字段的值.是不是要格式化.再插入到表.
      

  3.   

    谢谢,不过不懂。你的意思是说把这句拿到SQLyot这类的软件上对数据库进行实验这句能否添加数据了?我在Mysql的客户端添加成功。
    顺便问一句,怎么为我解答了问题的人给分,我新来的。
      

  4.   

    你的btime,etime是datatime类型的吧,那肯定会出错,你把字符串类型的插进去肯定会有匹配错误...
      

  5.   

    怎么匹配datatime类型了?再编个函数用来转换格式的?
      

  6.   

    将它转化一下,convert(varchar(10),btime,121),convert(varchar(10),etime,121)
      

  7.   

    更夸张了
    string sql2="select convert(varchar(10),btime,121),convert(varchar(10),etime,121) from note";
    note是我建的表,它说我FROM子句出错/
      

  8.   

    又出错了,这次更斜,convert函数没有定义。
      

  9.   

    哦,你的是access的数据库吧,你看一下是不是那里面没有varchar类型,你换个别的类型,反正是转化成字符型的
      

  10.   

    这个函数的作用就是将datatime类型转化成varchar,后面(10)代表取前10位,即取到多少号,(4)取到多少年,(7)表示取到多少月份,你把varchar换一下试试
      

  11.   

    可TMD我的ACCESS是中文的。类型是文本,50字符。应该就是varchar(50)了吧,难道是text类型?
      

  12.   

    不是,varchar后面括号里的数字表示取这个时间的前多少位
    你把varchar换成ACCESS里面的字符串类型吧
      

  13.   

    不好意思,是我想错了,由字符串向datetime类型转化的时候不会错,不过前提条件是:
     你的字符串类型必须是"2005-05"或者"2005-06-12"这种形式
      

  14.   

    2005-3-4格式。我在ACCESS里添加数据时没有错。
    ACCESS字符传格式是varchar类型的吧,动态字符串。这里要不了text的吧?
      

  15.   

    异常详细信息: System.Data.OleDb.OleDbException: 表达式中 'convert' 函数未定义。
    是这个错误了现在。我疯了都。
      

  16.   

    没怎么用过ACCESS,不知道有varchar类型没有,你在ACCESS里试了没有错那就看看你程序里传进去的那个值,调试一下看看"+TextBox4.Text.ToString()+"','"+TextBox5.Text.ToString()+"',的值对不对
      

  17.   

    'convert' 函数未定义。是啥子意思了?
      

  18.   

    放在SQL的查询分析器上看看,这样的语句,在SQL查询分析器上有可能是对的,但放在实际的代码中,也有可能不对,因为在代码中,分行和在查询分析器有点不同,你看看你的代码在分行之间的上双引号对不对,
      

  19.   

    string sql="insert into note(name,make,num,shin,rein,earn,btime,etime,etc) values(@name,@make,@num,@shin,@rein,@earn,@btime,@etime,@etc)"; SqlCommand cmm=new SqlCommand(sql,conn);
    cmm.Parameters.Add("@name",SqlDbType.VarChar,50).Value = TextBox1.Text.ToString();
    .......
    你看一下 这样是不是没有问题了