首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# select查询不适用于参数

c# select查询不适用于参数
EN

Stack Overflow用户
提问于 2011-11-05 15:05:00
回答 3查看 1.5K关注 0票数 1

我遇到过这样的情况,即此SQL语句无法工作。

代码语言:javascript
复制
command.Parameters.AddWithValue("@OA_Name", obj.GEToperatingauthority());
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = [@OA_Name]";

但是,当我将“@OA_Name”更改为在表中找到的简单值时,这条SQL语句可以工作。

代码语言:javascript
复制
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = ['OA 101']";

我测试了从obj.GetOperatingauthority()获得的值,它与数据库中的值完全相同。我已经使用reader.hasrows检查是否有任何返回的行。

顺便说一句,我使用的是c#和access 2010数据库。

编辑:我放入了下面的大部分代码:

代码语言:javascript
复制
        using (var command = connection.CreateCommand())
        {
            connection.Open();
            command.CommandType = CommandType.Text;

            command.Parameters.AddWithValue("@NRIC", obj.GETnricfinnumber());
            command.Parameters.AddWithValue("@Participant_Name", obj.GETname());
            command.Parameters.AddWithValue("@Gender", obj.GETgender());
            command.Parameters.AddWithValue("@DOB", obj.GETdateofbirth());
            command.Parameters.AddWithValue("@Nationality", obj.GETnationality());
            command.Parameters.AddWithValue("@Race", obj.GETrace());
            command.Parameters.AddWithValue("@Residential_Address", obj.GETresidentialaddress());
            command.Parameters.AddWithValue("@Contact_Number", obj.GETcontactnumber());
            command.Parameters.AddWithValue("@Email_Address", obj.GETemailaddress());

            command.CommandText = "SELECT [NRIC] FROM [Participant_Table] WHERE [NRIC] = [@NRIC]";
            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    if (reader.GetString(0).ToLower().Equals(obj.GETnricfinnumber().ToLower()))
                    {
                        message.show(1, "", "exists");
                        //return false;
                    }   
                }
            }

            command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = @OA_Name";
            command.Parameters.AddWithValue("@OA_Name", obj.GEToperatingauthority());

            using (var reader = command.ExecuteReader())
            {
                if (!reader.HasRows)
                {
                    message.show(1, "", "no rows!"); return false; //to test whether has rows or no rows
                }

编辑2: getOperatingAuthority不会错,因为它基本上是一个“闭环”系统,其中OA_Name用于填充组合框,从该组合框中选择的值用于引用回表以获取ID。

EN

回答 3

Stack Overflow用户

发布于 2011-11-05 15:32:58

试着去掉@OA_Name的括号。

代码语言:javascript
复制
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = @OA_Name";
command.Parameters.AddWithValue("@OA_Name", obj.GEToperatingauthority());
票数 1
EN

Stack Overflow用户

发布于 2011-11-05 15:10:46

将其更改为:

首先尝试测试您的obj.GEToperatingauthority()是否有值。

代码语言:javascript
复制
 command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = @OA_Name";

  var getoperation = Convert.ToString(obj.GEToperatingauthority());
     command.Parameters.AddWithValue("@OA_Name", getoperation );
 //use this for checking      

  var dt = new DataTable();

   var da = new SqlDataAdapter(command);

    connection.Open();

   da.Fill(dt);

   if(dt.Rows.Count > 0)
   {
     //records found
   }
   else
   {
      //No records Found
   }

问候

票数 0
EN

Stack Overflow用户

发布于 2011-11-05 15:16:31

尝试测试:

代码语言:javascript
复制
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = [" + obj.GEToperatingauthority() + "]";

不是很优雅,但它可以工作,如果它不能工作,那么这肯定是一个问题

代码语言:javascript
复制
command.Parameters.AddWithValue("@OA_Name", obj.GEToperatingauthority());

EDIT - OK回复您的评论:现在尝试这样做:

代码语言:javascript
复制
command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = [" + "'" + obj.GEToperatingauthority() + "'" + "]";

如果这是有效的,那就是缺乏‘’

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8018722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档