小编Emr*_*car的帖子

在C#中调用多个“ SQL DataReader”的正确方法是什么?

我打电话ExecuteReader();来获取数据,然后我需要通过另一个查询来获取另一个数据。我的结构一直都是这样的:

class SomeClass
{
    public static void Main(String[] args)
    {
        SqlConnection sqlConn = new SqlConnection();
        sqlConn.ConnectionString = "some connection string" 

        SqlCommand SQLCmd = new SqlCommand();
        SQLCmd.CommandText = "some query";
        SQLCmd.Connection = sqlConn;
        sqlConn.Open();

        sqlReader = SQLCmd.ExecuteReader();

        while (sqlReader.Read())
        {
            //some stuff here
        }

        sqlReader.Dispose();
        sqlReader.Close();
        sqlConn.Close();

        SQLCmd.CommandText = "another query";
        sqlConn.Open();
        sqlReader = SQLCmd.ExecuteReader();

        while (sqlReader.Read())
        {
            //some other stuff here
        }

        sqlReader.Dispose();
        sqlReader.Close();
        sqlConn.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

它们共享相同的连接字符串。他们还能分享什么?他们可以共享sqlConn.Open(); 吗?资源分配和避免错误的正确方法是什么?

顺便说一句,它按原样工作。提前致谢。

c# sql linq database

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

在一个查询中获取两个完全不同的列

我正在开发一个asp.net项目.我需要使用两种不同的条件过滤数据库,并在饼图中显示每个条件.所以我需要在一个查询中获得两列.

第1栏:

select COUNT (*) 'OAS' from atmterminalfile (nolock) where Atstatu='2' and atlinestat ='1'
Run Code Online (Sandbox Code Playgroud)

第2栏:

select COUNT (*) 'OFS'  from atmterminalfile (nolock) where Atstatu='2' and atlinestat ='2'
Run Code Online (Sandbox Code Playgroud)

我搜索了许多解决方案,我尝试了UNION,但结果就是这个

|      OAS       |
|----------------|
| Column 1 Count |
| Column 2 Count |
Run Code Online (Sandbox Code Playgroud)

我只需要这个.

|      OAS         |        OFS       |
---------------------------------------
| Column 1 Count   |  Column 2 Count  |
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

标签 统计

sql ×2

c# ×1

database ×1

linq ×1

sql-server ×1