当前位置: 首页 > 面试题库 >

在C#控制台应用程序中显示SQL数据库中的值

穆高澹
2023-03-14
问题内容

我正在尝试使用C#连接到数据库并显示某些数据点。该数据库有许多列和表,我只想使用Writeline()在控制台中显示它们。以下是我到目前为止的内容。该代码运行无错误,但也不显示任何内容。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data.Sql;

namespace SQLIntro
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SqlConnection connection = new SqlConnection("Server=[SQ_SIXTEEN];Database=[PocketCentral];User ID=[un];Password=[pw];Trusted_Connection=true"))
            {
                connection.Open();
                using (SqlCommand command = new SqlCommand("SELECT * FROM tbl_Terminal", connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                Console.WriteLine(reader.GetValue(i));
                            }
                            Console.WriteLine();
                        }
                    }
                }
            }
        }
    }
}

一件事是列信息会去哪里… SQL命令?还是在while循环中?


问题答案:

该代码实际上将引发异常。您已在连接字符串中用括号将名称括起来,这将导致连接失败。更改为:

using (SqlConnection connection = new SqlConnection("Server=SQ_SIXTEEN;Database=PocketCentral;Trusted_Connection=true"))

请注意,当Trusted_Connection为true(Windows身份验证)时,您不使用UserID和Password。

编辑:附加说明。

通常,您会知道您的数据内容(您的列名和类型)。从SQL的角度来看,建议您列出所有列。即:与其简单地使用“选择*”,不如使用“选择名字,姓氏,…从…中”。

根据读者,而不是reader.GetValue [i],您可以使用reader [index]并将类型强制转换为应具有的形式:

(int)reader[0]
(DateTime)reader["OrderDate"]

整数索引速度更快,但取决于列位置,在该位置上具有列名的字符串索引更易读。

EDIT2:不要跳过研究LINQ。恕我直言,这很容易。



 类似资料:
  • 我的应用程序使用terracotta/ehcache作为hibernate二级缓存以及“自定义”应用程序缓存,当本地运行terracotta服务器并通过开发人员控制台连接到它时,我可以看到我的应用程序以及各种缓存和统计数据。当我将相同的设置部署到不同的服务器时,它看起来正常,但是当我将开发人员控制台连接到远程服务器时,我可以在拓扑节点下的服务器阵列中看到一个服务器,但是我没有“我的应用程序”节点,

  • 问题内容: 有什么方法可以使用C在Linux中模拟按键吗? 在我的特定情况下,我使用的是Ubuntu 9.04,需要一个简单的应用程序,该应用程序在启动时会调用“暂停”按钮。那将使Firefox中的iframe使用Javascript刷新。 问题答案: 我认为您的意思是“ X11应用程序”-从您的描述中还不能完全清楚您打算做什么。下面的代码片段将使用XTest扩展名将“暂停”键代码发送到当前在X1

  • 问题内容: 我一直在寻找如何从数据库中检索二进制数据。我的查询工作正常,因为它在SQL管理器中显示了二进制数据。 但是在Visual Studio 2010中,它只是向我显示,我个人认为这不是问题,但是如果我尝试检索它并将其存储在变量中,则它只是空的。只要与二进制数据无关,任何其他查询都可以工作… 而且我不想使用数据网格或其他任何东西,因为我只需要将其用作变量。 我知道这不是完整的代码,但这是出问

  • 问题内容: 我正在研究使用python开发控制台应用程序,该应用程序应该能够在Windows和Linux下运行。为此,我真的很想使用像curses这样的高级控制台库。但是,据我所知,curses在Windows上不可用。 我还有什么其他选择?不幸的是,在Windows下不能使用cygwin。 谢谢你的帮助! 问题答案: 有一个问题。我从未尝试过,但它可能满足您的需求。听起来好像并没有完全的curs

  • 我试着把这个项目作为一个正常的参考。但是在重新构建解决方案之后,控制台应用程序仍然没有将.NET核心库作为参考。

  • 要在控制台应用程序中开始使用Hangfire,您需要首先将Hangfire包安装到控制台应用程序。因此,使用您的软件包管理器控制台窗口进行安装: PM> Install-Package Hangfire.Core 然后添加任务存储安装所需的软件包。例如,使用SQL Server: PM> Install-Package Hangfire.SqlServer 仅需 Hangfire.Core 软件包