标签: sqldatareader

保持SqlDataReader在n层的层上打开

我有一个Database类,它抽象出SqlCommand的ExecuteNonQuery()和ExecuteReader().由于各地使用块包裹的SqlConnection和SqlCommand的,该CustomExecuteReader()被调用后SqlDataReader中被关闭,所以我不能在业务层面层读取SqlReaderResultSet.代码如下.谢谢大家的反馈.

public static SqlDataReader SqlReaderResultSet { get; set; }    

public static SqlDataReader CustomExecuteReader(string storedProc)
    {
        using (var conn = new SqlConnection(ConnectionString))
        {
            var cmd = new SqlCommand(storedProc, conn) {CommandType = CommandType.StoredProcedure};                

            try
            {
                conn.Open();
                SqlReaderResultSet = cmd.ExecuteReader();
            }
            catch (InvalidOperationException)
            {
                if (conn.State.Equals(ConnectionState.Closed))
                    conn.Open();
            }
            finally
            {                    
                conn.Close();
            }

        }
        return SqlReaderResultSet;
    }
Run Code Online (Sandbox Code Playgroud)

c# sqldatareader

0
推荐指数
1
解决办法
1322
查看次数

读取器关闭时无效的读取尝试

我正在处理C#和MySql请求.我正在尝试在我的数据库中检索我的数据但是我有这样的错误消息:读取器关闭时无效的读取尝试.

谢谢你们的帮助:)

我有这个功能:

public MySqlDataReader GetValueFromTable(string table, ArrayList attribut, ArrayList parameter)
{
   string query = string.Empty;
   MySqlDataReader rdr = null;      
   try
   {
      query = "SELECT * FROM `" + table + "` WHERE ";
      for (int i = 0; i < attribut.Count; i++)
      {
         query += attribut[i] as string;
         query += " = ";
         query += parameter[i] as string;

         if(i != attribut.Count - 1) 
            query += " AND ";
      }

      query += ";";

      using (mysqlConnection)
      {
          using (mysqlCommand = new …
Run Code Online (Sandbox Code Playgroud)

c# sqldatareader

0
推荐指数
1
解决办法
8927
查看次数

T-SQL中的位类型

在我的表中,我使用IsTrue列类型.

当我执行select命令时:

SqlDataReader reader = command.ExecuteReader(); 
Run Code Online (Sandbox Code Playgroud)

我不确定会有什么reader["isTrue"]回报?

我试着做比较

reader["isTrue"].ToString().Equals("0")
Run Code Online (Sandbox Code Playgroud)

但它没有奏效.有人可以告诉我我做错了什么吗?

c# sql-server types sqldatareader bit

0
推荐指数
1
解决办法
4437
查看次数

如何在c#中使用if/then语句设置变量类型?

我有一个执行SQL查询的函数.根据注册表值,它将命中SQL Server或SQL Server Compact Edition.如果它使用的是SQL Server CE,则设置recordSet变量的行应如下所示:

SqlCeDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
Run Code Online (Sandbox Code Playgroud)

对于SQL Server,它应该如下所示:

SqlDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
Run Code Online (Sandbox Code Playgroud)

我试图将所有这些放在函数开头的if/then语句中,但似乎无法弄清楚如何在if/then中设置Type.这是我的(部分)代码:

public static string SqlQuery(string selectCommand, int regval)
{
    var recordSet = null;
    string selectCommand = "select * from whatever";

    if (regval == 0)
    {
        SqlDataReader recordSet = null;
    }
    else
    {
        SqlCEDataReader recordSet = null;
    }

    recordSet = da.ExecuteSQLCommand(selectCommand);
}
Run Code Online (Sandbox Code Playgroud)

问题是除非我在if/else之前声明了recordSet变量,否则我不能在之后使用它.但是,如果我在if/else之前声明它,我就无法更改类型.

.net c# sql-server sqldatareader sql-server-ce

0
推荐指数
1
解决办法
133
查看次数

SqlDataReader无法识别列序数值

我正在尝试通过WCF服务访问Silverlight应用程序的SQL数据库,由于某种原因,我的SqlDataReader对象一直给我错误.我只是试图从数据库中检索一个单一的值.

这是我现在的代码:

using(SqlConnection oConnection = new SqlConnection(ConnectionString))
{
   SqlCommand oCommand = new SqlCommand("SELECT SystemVersNo FROM dbo.CoPolicyPointer WHERE SystemAssignId = '58859700000000'");

   CompositeType oCustomer = new CompositeType();

   SqlDataReader oReader = null;
   oConnection.Open();
   oCommand.Connection = oConnection;
   oReader = oCommand.ExecuteReader();

   if (oReader.HasRows)
   {
      oCustomer.SRVNo = oReader.GetValue(0).ToString();
   }
   else
   {
      oCustomer.SRVNo = "No rows returned.";
   }

   oConnection.Close();

   return oCustomer;
}
Run Code Online (Sandbox Code Playgroud)

oReader.HasRows返回true,但oReader.GetValue(0)(或oReader.GetAnythingElse,就此而言)抛出一个错误:

System.InvalidOperationException:没有数据时读取的尝试无效.

然而,真正令我困惑的是,如果我打电话oReader.GetOrdinal("SystemVersNo"),或者oReader.GetName(0),他们都返回正确的价值观.序数位置如何以零返回,但是在该位置找不到要读取的值?如果我在SQL Server Management Studio中运行相同的查询,那么值就没问题了,所以我知道它就在那里.

我对这一切都是全新的,我错过了一些基本的东西吗?或者有什么时髦的事情发生.

谢谢!

c# silverlight wcf sqldatareader

0
推荐指数
1
解决办法
384
查看次数

如何对 SQLServer 数据库执行 SELECT 查询并使用 PowerShell 迭代结果

假设我有一个包含 3 列的表——“Column1”、“Column2”和“Column3”——所有 3 列的数据类型都是 varchar(100)。

使用 PowerShell,如何连接到 SQL Server 并使用 SqlDataReader 和 ForEach 运算符查看“Column2”的内容?

sql-server powershell foreach sqldatareader

0
推荐指数
1
解决办法
6594
查看次数

SqlDataReader的问题

我正在使用a SqlDataReader而在尝试阅读读者时我正在使用行.

当我检查时.HasRows,行不可用.

List<EmployeeTimings> empTimingsList = new List<EmployeeTimings>();

// Creates a SQL connection
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["WINPAKContext"].ToString()))
{
    // Creates a SQL command
    using (var command = new SqlCommand("SELECT * FROM SEED_VIEW WHERE empid is not null and DateTime > '" + dtlastpunch + "' order by datetime", connection))
    {
        connection.Open();

        // Loads the query results into the table
        var reader = command.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                EmployeeTimings empTime = new EmployeeTimings();
                empTime.CardNumber …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqldatareader sql-server-2008

0
推荐指数
1
解决办法
56
查看次数

使用SqlDataReader时"data为null"

我的代码中的最后一个字符串有问题.

这是我的代码:

private void comboLname_SelectedIndexChanged(object sender, EventArgs e)
{
            string conn = "Data Source=srv-db-02;Initial Catalog=rmsmasterdbtest;Persist Security Info=True;User ID=test;Password=*****";
            string Query = "select * from RMSCRMTest.dbo.sales where LastName= '" + comboLname.Text + "' ;";


            SqlConnection Myconn = new SqlConnection(conn);
            SqlCommand cmdDataBase = new SqlCommand(Query, Myconn);
            SqlDataReader Reader;
            try
            {
                Myconn.Open();
                Reader = cmdDataBase.ExecuteReader();
                while (Reader.Read())
                {
                    string ID = Reader.GetInt32(Reader.GetOrdinal("ID")).ToString();
                    string AccountNuber = Reader.GetString(Reader.GetOrdinal("AccountNumber")).ToString();
                    string Time = Reader.GetDateTime(Reader.GetOrdinal("Time")).ToString();
                    string Deposit = Reader.GetDecimal(Reader.GetOrdinal("Deposit")).ToString();
                    string slastname = Reader.GetString(Reader.GetOrdinal("lastname"));
                    string sstatus = Reader.GetString(Reader.GetOrdinal("status"));
                    txtid.Text …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqldatareader

-1
推荐指数
1
解决办法
5817
查看次数

如何获取有多少元素数据读取器?

如何获取datareader的长度,如:

sqlDataReader dr = command.ExecuteReader();
dr.Read();

int L= dr.Length;// this doesn't work.
Run Code Online (Sandbox Code Playgroud)

c# sql database sqldatareader winforms

-2
推荐指数
1
解决办法
1万
查看次数

在MVC中使用SqlDataReader显示数据以查看

如何在MVC中使用SqlDataReader使用Razor视图显示数据?我已经尝试过这样的事情。

控制器代码:-

public ActionResult UserDetails(DashBoard dash)
    {            
        using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
        {
            String sql = "SELECT DU.UserRMN, MU.Name, DeptName, MgrID, TLeadID FROM Details_Users DU, Master_Users MU where DU.UserRMN=MU.UserRMN";
            SqlCommand cmd = new SqlCommand(sql, cn);           
            cn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            List<DashBoard> model = new List<DashBoard>();
            while(rdr.Read())
            {
                var details = new DashBoard();
                details.UserRMN = rdr["UserRMN"].ToString();
                details.Name = rdr["Name"].ToString();
                details.DeptID = rdr["DeptID"].ToString();
                details.MgrID = rdr["MgrID"].ToString();
                details.TLeadID = rdr["TLeadID"].ToString();
                model.Add(details);
            }
            return View(model);
        }  
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc sqldatareader razor

-2
推荐指数
1
解决办法
6026
查看次数