SQL 参数和 int 值

Posted

技术标签:

【中文标题】SQL 参数和 int 值【英文标题】:SQL Parameter And int Value 【发布时间】:2021-08-26 17:39:03 【问题描述】:

我在ado.net中使用查询来读取datagrid中要显示的信息,但是问题是我的Teacher_Id相关的SQL参数有问题,不允许显示信息。 你的解决方案是什么?

我记得,没有错误,只是datagrid中没有显示信息!

我在 SQL 中执行了这段代码,它工作正常,但我不知道 ado.net 有什么问题?

我之前在 LIKE 中使用过相同的代码,它在 ado.net 上运行良好

我的代码是:

public DataTable Read_For_Properties(string University_Name, int Teacher_Id, string Year, string Term, string Lesson_Code, string Houre, string ClassRoom_Name)

    SqlConnection SQL_Con = new SqlConnection(@"Data Source=SQLSERVER\SQLSERVER;Initial Catalog=DB1;Integrated Security=True");

    SqlCommand SQL_Com = new SqlCommand(@"select 
                                            Turns.Id,
                                            case Humen.Discriminator when 'Student' then Humen.Name end as 'Name',
                                            case Humen.Discriminator when 'Student' then Humen.Family end as 'Family',
                                            Turns.Score as 'Score'
                                            from Turns 
                                            inner join Lessons on Lessons.Id = Turns.Lesson_Id
                                            inner join Universities on Universities.Id = Turns.University_Id
                                            inner join Class_Room on Class_Room.Id = Turns.Class_Room_Id
                                            inner join Humen on Humen.Id = Turns.Student_Id

                                            where Class_Room.Name = @P1 AND Turns.Houre = @P2 AND Lessons.Lesson_Code = @P3 AND Turns.Term = @P4 AND Turns.Year = @P5 AND 
                                            Turns.Teacher_Id = @P6 AND Universities.Name = @P7");
    SQL_Com.Connection = SQL_Con;
    SQL_Com.Parameters.Add(new SqlParameter("@P1", "%" + ClassRoom_Name + "%"));
    SQL_Com.Parameters.Add(new SqlParameter("@P2", "%" + Houre + "%"));
    SQL_Com.Parameters.Add(new SqlParameter("@P3", "%" + Lesson_Code + "%"));
    SQL_Com.Parameters.Add(new SqlParameter("@P4", "%" + Term + "%"));
    SQL_Com.Parameters.Add(new SqlParameter("@P5", "%" + Year + "%"));
    SQL_Com.Parameters.Add(new SqlParameter("@P6", Teacher_Id ));
    SQL_Com.Parameters.Add(new SqlParameter("@P7", "%" + University_Name + "%"));

    DataSet DS = new DataSet();

    SqlDataAdapter SQL_DA = new SqlDataAdapter();
    SQL_DA.SelectCommand = SQL_Com;
    SQL_DA.Fill(DS);

    return DS.Tables[0];

【问题讨论】:

如果您收到错误,请编辑您的问题并添加错误。 没有错误!只是在datagridview中没有显示信息 看起来你不是在执行 SQL... 我在sql中执行了这段代码,它工作正常,但我不知道ado.net有什么问题? 你使用 % 让我觉得你打算使用 LIKE 而不是 = 【参考方案1】:

解决方案

我无意中意识到解决方法有多简单,只需删除“%”! 符号“%”显然用于 LIKE 命令

【讨论】:

以上是关于SQL 参数和 int 值的主要内容,如果未能解决你的问题,请参考以下文章

使用ado.net将多个SQL表值参数传递到单个存储过程

无法将参数值从 String 转换为 DateTime 的 Int32

在 pyspark 的 Scala UDF 中使用默认参数值?

关于Java的sql动态参数

是否可以在 sqlkata 中查询参数化的表值函数?

sql server存储过程的参数都有哪些类型