【问题标题】:dataReader reader = cmd.executereader() not workingdataReader reader = cmd.executereader() 不工作
【发布时间】:2016-02-18 00:48:28
【问题描述】:

我陷入了简单的数据读取器问题。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Sql;

public void proName(string str)
        {
            SqlDataReader reader;
             using (SqlConnection sqlcon = new SqlConnection(constr))
            {
               string proId = textBox3.Text;

               SqlCommand sqlcmd = new SqlCommand("SELECT proName FROM products where proId = proId;", sqlcon);
               sqlcmd.CommandType = CommandType.TableDirect;
               reader = cmd.executereader();


            }
        }

它在 cmd / 命令下显示错误(名称 cmd 不会在当前上下文中退出).....

我尝试在连接前后创建对象,但没有成功。

【问题讨论】:

  • with CommandType.TableDirect 你不写选择

标签: c# sql .net winforms visual-studio-2012


【解决方案1】:

命令类型不应为TableDirect

sqlcmd.CommandType = CommandType.Text; // which is default
reader = sqlcmd.executereader();

【讨论】:

    【解决方案2】:

    变量名是sqlcmd,您在executereader() 函数中请求cmd

    sqlcmd.CommandType = CommandType.TableDirect;
    reader = cmd.executereader();
    

    应该是

    sqlcmd.CommandType = CommandType.TableDirect;
    reader = sqlcmd.executereader();
    

    还请考虑 CharithJ 的回答,正如他所说:

    命令类型不应是 TableDirect。

    【讨论】:

      【解决方案3】:

      下面应该工作..

      using System;
          using System.Collections.Generic;
          using System.ComponentModel;
          using System.Data;
          using System.Drawing;
          using System.Linq;
          using System.Text;
          using System.Threading.Tasks;
          using System.Windows.Forms;
          using System.Data.SqlClient;
          using System.Data.Sql;
              public void proName(string str)
              {
                  SqlDataReader reader;
                  using (SqlConnection sqlcon = new SqlConnection(constr))
                  {
                      string proId = textBox3.Text;
                      sqlcon.Open();
                      SqlCommand sqlcmd = new SqlCommand("SELECT proName FROM products where proId = proId;", sqlcon);
                      sqlcmd.CommandType = CommandType.Text;
                      reader = sqlcmd.ExecuteReader();
                      if (reader.Read())
                      {
                          Response.Write(reader[0].ToString());
      
                      }
      
                  }
              }
      

      【讨论】: