c#连接数据库,出现“0”附近有语法错误,求指点

时间:2022-02-08 20:28:58
using ShareA.DataBase;
using ShareA.Utility;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LogicContract.ClinicInCharge
{
   public  class DoctordutyQuery
    {
        private string TableName = "Doctorduty"; //连接数据库Doctorduty
        public List<DataContract.ClinicInCharge.DoctorDuty> Query(DateTime worktime) //查询操作
        {
            string sql = string.Empty, err;
            sql = string.Format(@" select * from {0} where worktime={1} ", TableName, worktime);

            DataTable dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);
            if (err.Length > 0)
            {
                throw new Exception(err);
            }
            return DataConverter.DataTableToIList<DataContract.ClinicInCharge.DoctorDuty>(dt).ToList();
        }
    }
}

27 个解决方案

#1


跟踪调试,把语句打印出来,只给代码,谁知道你调用的时候传的啥参数 c#连接数据库,出现“0”附近有语法错误,求指点

#2


引用 1 楼 chb345536638 的回复:
跟踪调试,把语句打印出来,只给代码,谁知道你调用的时候传的啥参数 c#连接数据库,出现“0”附近有语法错误,求指点

怎么跟踪调试,我是小白

#3



 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。

#4


引用 3 楼 Roselle_2013 的回复:

 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。


尴尬,表名不需要加引号,,后面的worktime加就可以了

#5


引用 3 楼 Roselle_2013 的回复:

 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。


引用 3 楼 Roselle_2013 的回复:

 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。

现在出现‘doctorduty’附近有语法错误

#6


看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

#7


引用 6 楼 Roselle_2013 的回复:
看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

   sql = string.Format(@" select * from '{0}' where worktime='{1}'  ", TableName, worktime);
我只改了这一句啊

#8


引用 6 楼 Roselle_2013 的回复:
看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

我知道了

#9


引用 7 楼 qq_32320747 的回复:
Quote: 引用 6 楼 Roselle_2013 的回复:

看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

   sql = string.Format(@" select * from '{0}' where worktime='{1}'  ", TableName, worktime);
我只改了这一句啊


不是,,,就是这一句里面有两个参数,,,第一个参数也就是表名不用加引号。

select * from {0} where worktime='{1}' 

#10


引用 9 楼 Roselle_2013 的回复:
Quote: 引用 7 楼 qq_32320747 的回复:

Quote: 引用 6 楼 Roselle_2013 的回复:

看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

   sql = string.Format(@" select * from '{0}' where worktime='{1}'  ", TableName, worktime);
我只改了这一句啊


不是,,,就是这一句里面有两个参数,,,第一个参数也就是表名不用加引号。

select * from {0} where worktime='{1}' 

我按你的改出现从varchar数据类型到datetime数据类型的转换产生一个超出范围的值

#11


你的worktime加个ToString()试试?

worktime.ToString("yyyy-MM-dd HH:mm:ss");

#12


引用 11 楼 Roselle_2013 的回复:
你的worktime加个ToString()试试?

worktime.ToString("yyyy-MM-dd HH:mm:ss");

还是一样的错误

#13


sql = string.Format(@"select * from {0} where worktime='{1:G}'", TableName, worktime);

得:select * from Doctorduty where worktime='2018-1-26 15:49:39'

#14


引用 13 楼 xuzuning 的回复:
sql = string.Format(@"select * from {0} where worktime='{1:G}'", TableName, worktime);

得:select * from Doctorduty where worktime='2018-1-26 15:49:39'

出现从varchar数据类型到datetime数据类型的转换产生一个超出范围的值
出现这样子的错误,不行

#15


方便告知我们,你数据库里worktime这个字段是什么数据类型吗?

#16


引用 15 楼 Roselle_2013 的回复:
方便告知我们,你数据库里worktime这个字段是什么数据类型吗?

datetime

#17


贴出更多源代码,大家才好帮你

#18


如果是Datetime类型的话,问题可能是出在这个QueryFromDatabase里面了额。。你还是插入一个断点调试一下吧,【右键菜单=>断点(B)=>插入断点】然后按F11一步一步调试下来,看看数据情况吧。

#19


引用 18 楼 Roselle_2013 的回复:
如果是Datetime类型的话,问题可能是出在这个QueryFromDatabase里面了额。。你还是插入一个断点调试一下吧,【右键菜单=>断点(B)=>插入断点】然后按F11一步一步调试下来,看看数据情况吧。


数据情况在哪里看?

#20


你 worktime 字段的定义?

#21


鼠标移到变量上停下就能看到变量信息,下班了,溜了溜了

#22


调试一下看看那sql语句就知道了啊 c#连接数据库,出现“0”附近有语法错误,求指点

#23


语法错误吧!

#24


select * from {0} where worktime={1} ", TableName, worktime

调试查看一下 TableName, worktime的值 

#25


这个问题我见过

#26


该回复于2018-01-28 08:48:28被管理员删除

#27


select * from {0} where worktime= @worktime

这么来,  数据库表名用字符串格式化方式写入

后面参数采用传参的方式写入, 你数据库表该字段是什么类型, 则传参用什么类型

#1


跟踪调试,把语句打印出来,只给代码,谁知道你调用的时候传的啥参数 c#连接数据库,出现“0”附近有语法错误,求指点

#2


引用 1 楼 chb345536638 的回复:
跟踪调试,把语句打印出来,只给代码,谁知道你调用的时候传的啥参数 c#连接数据库,出现“0”附近有语法错误,求指点

怎么跟踪调试,我是小白

#3



 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。

#4


引用 3 楼 Roselle_2013 的回复:

 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。


尴尬,表名不需要加引号,,后面的worktime加就可以了

#5


引用 3 楼 Roselle_2013 的回复:

 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。


引用 3 楼 Roselle_2013 的回复:

 select * from '{0}' where worktime='{1}' 


参数值外面加两个引号啊。。

现在出现‘doctorduty’附近有语法错误

#6


看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

#7


引用 6 楼 Roselle_2013 的回复:
看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

   sql = string.Format(@" select * from '{0}' where worktime='{1}'  ", TableName, worktime);
我只改了这一句啊

#8


引用 6 楼 Roselle_2013 的回复:
看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

我知道了

#9


引用 7 楼 qq_32320747 的回复:
Quote: 引用 6 楼 Roselle_2013 的回复:

看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

   sql = string.Format(@" select * from '{0}' where worktime='{1}'  ", TableName, worktime);
我只改了这一句啊


不是,,,就是这一句里面有两个参数,,,第一个参数也就是表名不用加引号。

select * from {0} where worktime='{1}' 

#10


引用 9 楼 Roselle_2013 的回复:
Quote: 引用 7 楼 qq_32320747 的回复:

Quote: 引用 6 楼 Roselle_2013 的回复:

看我后面一个回答,,,,表名那里不用加引号, c#连接数据库,出现“0”附近有语法错误,求指点

   sql = string.Format(@" select * from '{0}' where worktime='{1}'  ", TableName, worktime);
我只改了这一句啊


不是,,,就是这一句里面有两个参数,,,第一个参数也就是表名不用加引号。

select * from {0} where worktime='{1}' 

我按你的改出现从varchar数据类型到datetime数据类型的转换产生一个超出范围的值

#11


你的worktime加个ToString()试试?

worktime.ToString("yyyy-MM-dd HH:mm:ss");

#12


引用 11 楼 Roselle_2013 的回复:
你的worktime加个ToString()试试?

worktime.ToString("yyyy-MM-dd HH:mm:ss");

还是一样的错误

#13


sql = string.Format(@"select * from {0} where worktime='{1:G}'", TableName, worktime);

得:select * from Doctorduty where worktime='2018-1-26 15:49:39'

#14


引用 13 楼 xuzuning 的回复:
sql = string.Format(@"select * from {0} where worktime='{1:G}'", TableName, worktime);

得:select * from Doctorduty where worktime='2018-1-26 15:49:39'

出现从varchar数据类型到datetime数据类型的转换产生一个超出范围的值
出现这样子的错误,不行

#15


方便告知我们,你数据库里worktime这个字段是什么数据类型吗?

#16


引用 15 楼 Roselle_2013 的回复:
方便告知我们,你数据库里worktime这个字段是什么数据类型吗?

datetime

#17


贴出更多源代码,大家才好帮你

#18


如果是Datetime类型的话,问题可能是出在这个QueryFromDatabase里面了额。。你还是插入一个断点调试一下吧,【右键菜单=>断点(B)=>插入断点】然后按F11一步一步调试下来,看看数据情况吧。

#19


引用 18 楼 Roselle_2013 的回复:
如果是Datetime类型的话,问题可能是出在这个QueryFromDatabase里面了额。。你还是插入一个断点调试一下吧,【右键菜单=>断点(B)=>插入断点】然后按F11一步一步调试下来,看看数据情况吧。


数据情况在哪里看?

#20


你 worktime 字段的定义?

#21


鼠标移到变量上停下就能看到变量信息,下班了,溜了溜了

#22


调试一下看看那sql语句就知道了啊 c#连接数据库,出现“0”附近有语法错误,求指点

#23


语法错误吧!

#24


select * from {0} where worktime={1} ", TableName, worktime

调试查看一下 TableName, worktime的值 

#25


这个问题我见过

#26


该回复于2018-01-28 08:48:28被管理员删除

#27


select * from {0} where worktime= @worktime

这么来,  数据库表名用字符串格式化方式写入

后面参数采用传参的方式写入, 你数据库表该字段是什么类型, 则传参用什么类型