能取到sql语句么??能取到  就在sql的IDE中运行,看看哪错了

解决方案 »

  1.   

    insert into report(RequestNum,PatientName,PatientSex,PatientRecordNo,SampleType,SampleState,SendDept,SendDoctor,SendDate,PerformDept,ClinicalDiagnosis,Note,LabResult,NormalRefValue,TestingValue,ReportDoc,CheckDoc,ReportDate) values (@RequestNum,@PatientName,@PatientSex,@PatientRecordNo,@SampleType,@SampleState,@SendDept,@SendDoctor,@SendDate,@PerformDept,@ClinicalDiagnosis,@Note,@LabResult,@NormalRefValue,@TestingValue,@ReportDoc,@CheckDoc,@ReportDate)
    该语句报语法错误
      

  2.   

    你的   @RequestNum,@PatientName 什么的都不是具体的值,当然报错了。
    string.Format("insert into table (.....) values('{0}',{1})",‘123’,1)
      

  3.   


    ado.net参数化sql,只能这么写呀!如果还这么写string.Format("insert into table (.....) values('{0}',{1})",‘123’,1) ,那不就是拼接sql了吗?不安全呢。
      

  4.   

    我的数据库是Access,难道是它不支持参数化sql吗?
      

  5.   


    ado.net参数化sql,只能这么写呀!如果还这么写string.Format("insert into table (.....) values('{0}',{1})",‘123’,1) ,那不就是拼接sql了吗?不安全呢。
    嗯,你给参数赋值了么??
    http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparameter(v=vs.110).aspx
      

  6.   

    贴出完整的异常提示,包括 InnerExcption属性。不要随便说一句“语法错误”。另外,你要真正去查一下你写的代码确实符合 Jet-sql 的语法,不要拿别的关系数据库(例如t-sql)的语法直接套用。
      

  7.   


    贴出调试信息,有你代码的上下文(知道你怎样使用参数),看得清楚异常信息(包括InnerExcetion)。
      

  8.   


    贴出调试信息,有你代码的上下文(知道你怎样使用参数),看得清楚异常信息(包括InnerExcetion)。
      

  9.   


    ado.net参数化sql,只能这么写呀!如果还这么写string.Format("insert into table (.....) values('{0}',{1})",‘123’,1) ,那不就是拼接sql了吗?不安全呢。
    嗯,你给参数赋值了么??
    http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparameter(v=vs.110).aspx
    肯定赋值了。
      

  10.   

    数据库里的字段都是255长度的varchar么?
      

  11.   

    是的,access数据库建库时,文本类型的字段都是默认255,没改过。
      

  12.   


    贴出调试信息,有你代码的上下文(知道你怎样使用参数),看得清楚异常信息(包括InnerExcetion)。唉,Jet 的提示太少。如果放到SQL Server,它会给你至少指出哪一个字符附近的语法有错。看看是不是少了两个空格符号。你试试把参数缩少成1、2个,看看报不报错。你试试吧 @xxx 变成问号。其实在参数中给出名字,没用。Ole根本不是按照名字的顺序。http://msdn.microsoft.com/zh-cn/library/system.data.oledb.oledbparameter(v=vs.110).aspx
      

  13.   

    在上面的msdn文档中你可以看到“OLE DB.NET Framework 数据提供程序使用标有问号 (?) 的定位参数,而不使用命名参数”而且它给出的例子也是使用?号的!
      

  14.   

    最近我也写连Access的SQL好蛋疼,不过还好弄好了,你试试在nsert into report([RequestNum],PatientName,PatientSex,PatientRecordNo,SampleType,SampleState,SendDept,SendDoctor,SendDate,PerformDept,ClinicalDiagnosis,Note,LabResult,NormalRefValue,TestingValue,ReportDoc,CheckDoc,ReportDate) values (@RequestNum,@PatientName,@PatientSex,@PatientRecordNo,@SampleType,@SampleState,@SendDept,@SendDoctor,@SendDate,@PerformDept,@ClinicalDiagnosis,@Note,@LabResult,@NormalRefValue,@TestingValue,@ReportDoc,@CheckDoc,@ReportDate)加上[ ],可能是你表中的栏位存在关键字~
      

  15.   


    我把参数只保留11个,sql语句正常通过。当新增一个参数时就报错,检查了第12个参数,传入的值是空字符串,应该没有问题呀?搞不懂了。
      

  16.   


    谢谢,是Note字段名问题,加【】后解决。