2

我正处于编写我的第一个真正程序的准备阶段。我设计了一组表来存储我的财务数据。我知道

1) 哪些数据在表中的位置

2)表和字段之间存在什么关系

3)需要什么查询

4)将数据写入表的表单应该是什么样的

5)我需要什么输出以及应该如何组织它

我决定使用 C#,使用 WPF 作为 GUI,使用 SQL 数据库作为数据。如果我理解正确,我将需要 ADO.NET 来与 SQL db 交互。对我来说问题是,现在我只熟悉使用文本文件(或键盘)进行输入来编写非 GUI C++。

我不希望成为一个拥有多样化和适销对路技能的程序员,所以我宁愿避免花时间学习不适用于这个项目的东西。我正在寻找从这里到有用的工作(和可维护)程序的最直接途径。

这就是我需要帮助的情况。如果我遗漏了任何相关内容,请告诉我。

我的问题是,我需要从这里采取哪些步骤来完成它?

谢谢你的帮助。

4

4 回答 4

2

我对你的建议是首先在所选平台下将你的第一个原型编写为控制台/文本程序。当您以您想要的方式获得输入和输出时 - 然后再次请求重构帮助以按照您想要的方式获得 UI。您还可以轻松测试您的数据库查询,并且您可以更早地更有效地使用现有技能来获得正确的功能,但用户界面有限。

然后,您的控制台程序也将验证您的程序的 GUI 版本是否按预期工作。

编辑:这是一个简单的程序,它从数据库中读取一个值并将其放在屏幕上。

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        using (SqlConnection connection = new SqlConnection("Data Source=server;database=mydb; Integrated Security=SSPI"))
        {
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT CategoryID, CategoryName FROM dbo.Categories;";

            try
            {
                connection.Open();

                SqlDataReader reader = command.ExecuteReader();

                // process each row one at a time
                while (reader.Read())
                {
                    // reader contains the row (reader[0] is first column, etc)
                    Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]);
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

最初使用这个(以及我获得另一个版本的链接)来帮助您完成 ado.net。作为经验丰富的程序员,您可以看到,如果您遵循此模型,您可以创建基于传入查询返回数据的通用函数。当您想要获取数据表而不是简单值时,我建议您从 ExecuteReader 转移到其他数据函数函数。

注意通常我不建议您从这里开始 - 我建议您使用流利的 NHbernate,但这对于初学者来说有点复杂,并且在您了解您的代码(在 .net 中)与数​​据库的关系以及其中的数据之后会更好.

jsut也有一个想法。如果您想使用另一种技术而不是 SqlClient,您可以使用Linq2Sql。观看此视频,看看它是否有帮助。. 事实上,在DimeCasts.net上有一些非常有用的免费视频。

于 2009-08-15T22:41:11.380 回答
2

开始一个新的答案,因为我的旧答案不适用于这些非常具体的步骤。这个回答是为了支持 Preet Sangha 的回答,但目的是比我们任何人都更具体。

启动控制台应用程序并在应用程序顶部添加“使用 System.Data.SqlClient”行。您需要从 Connection 对象开始,然后是 Command 对象。尝试使用您的命令对象执行查询。尝试“插入”语句和“选择”语句。对于“选择”,您将从数据库中获取一些信息。为此使用 SqlDataReader(命令上的执行读取器)并尝试提取值(reader.read() 和 getXXX,其中 XXX 是您要检索的数据类型)。这些应该使您足够舒适,可以解决问题并返回更有针对性的问题。

考虑到您对此的了解程度,MSDN 将是您最好的朋友。这应该有助于你开始:) http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection(VS.71).aspx

于 2009-08-15T23:31:47.500 回答
1

您是否有任何文档指定应用程序将要做什么而不是规范如何完成?

如果你没有那个,那么退后一步,写一个功能规范。完成之后,您可能想要重做一些已经完成的工作。

您还应该花点时间思考一下您将如何组织您的代码。您将使用哪些命名空间和类。你将把代码放在哪里:

  • 用户界面
  • 商业逻辑
  • 数据库访问

您应该隔离应用程序的这些部分以使其更易于维护。

于 2009-08-15T20:45:55.370 回答
1

我不希望成为一个拥有多样化和适销对路技能的程序员,所以我宁愿避免花时间学习不适用于这个项目的东西。

在这种情况下,请跳过 .Net。您需要时间来学习它以做好工作。既然你提到你有(可能是最少的)C++ 经验,我可能会在 Qt Designer 的帮助下使用 Qt 来布局 GUI。从那时起,应用程序的其余部分应该与您已经完成的内容非常相似。

除非你知道你在用 .Net 做什么,否则你很快就会得到非常难以维护的代码。我为此责怪 Visual Studio。默认情况下,它鼓励“将这个东西拖到这里,把那个放在那里,双击并编写代码”的编码方法通常会导致可怕的混乱。

如果您仍然坚持要使用 C#/.Net,我鼓励您从后端开始,继续前进。在考虑 GUI 之前,花时间对实体、数据访问和业务层进行建模。您甚至可以更进一步,编写两个项目。一个是您的 dll,包含业务和数据访问逻辑。另一个是您的可执行文件,您可以在其中将 UI 事件连接到 dll 的 api。

祝你好运。

于 2009-08-15T21:12:57.547 回答