【问题标题】:Visual C# - simple program that can remember user inputs?Visual C# - 可以记住用户输入的简单程序?
【发布时间】:2012-04-05 10:02:27
【问题描述】:

我是 C# 的新手,正在努力获得一个良好的开端。

我可以用一些按钮和东西制作一个简单的表单程序。但这是我的问题:

在程序中存储用户输入的最佳做法或最佳做法是什么?

假设我创建了一个简单的程序,用户可以在其中通过文本框输入文本行并通过按钮将其“添加”到列表中。 当用户关闭并再次打开程序时,它应该记住他输入的每一行。 (就像日记一样)。

如何最好地做到这一点?我已经搜索了谷歌,但它根本没有帮助我。我应该使用数据库吗?保存并读取到文本文件? (ini/xml?)

这个简单的程序需要安装吗?或者它可以作为一个可执行的 exe 文件工作 - 并且仍然在用户计算机上保存/读取?

最好的问候(对不起我的英语)。

【问题讨论】:

    标签: c# input save store keystrokes


    【解决方案1】:

    目前最简单的选择是使用 XML 文件。除非您确实需要特定的东西,否则我不会尝试使用 ini 文件。

    如果您知道自己只需要存储来自单个文本输入区域的数据,那么文本文件是一个不错的选择。

    XML 将允许您通过序列化直接从对象存储和检索数据。

    否 - 简单的可执行文件不需要安装程序 - 但如果您不创建安装程序,则无法轻松添加快捷方式等内容。

    【讨论】:

    • 太棒了!非常感谢。这就是我需要的。现在谷歌可以帮助我;)顺便说一句,我第一次在 StackOverflow 上 - 不是我最后一次 :)
    • @user1281991 如果此答案解决了您的问题,请点赞并接受。谢谢。
    【解决方案2】:

    这类最简单和最可扩展的方法是使用一些嵌入式数据库。 个人会选择Sqlite。在下载部分,您也可以找到 .NET 的二进制文件。

    还有很多其他可能的选择,但这正是会选择在我手中掌握问题提供的信息。

    希望这会有所帮助。

    【讨论】:

    • 非常感谢。当您编写嵌入式数据库时,这是否意味着当我的程序被构建并且用户运行它时,数据库在我的程序中运行?所以用户不需要在他的系统上安装单独的数据库?
    • @user1281991:它实际上并不总是意味着这个数据库是in-process,但至少在Sqlite的情况下,你不需要任何东西否则 .NET Sqlite driver 并且没有服务或一些特殊设置。
    【解决方案3】:

    如果您是初学者,那么您的想法是正确的。
    您可以将数据存储在文本/xml 文件或数据库中。
    正如@dice 指出的那样,您可以选择 XML,但开始对 XML 进行编程可能会让人望而生畏。
    我建议去存储文本文件并感受一下事情是如何工作的。

    这里有一个great article 来开始 IO 编码。以后改这个

    string[] lines = {"First line", "Second line", "Third line"};
    

    指向用户输入。

    【讨论】:

      【解决方案4】:
          using System;
          using System.Collections.Generic;
          using System.Configuration;
          using System.Data.SqlClient;
          using System.Linq;
          using System.Text;
          using System.Threading.Tasks;
          using System.Windows.Forms;
      
          namespace WindowsFormsApplication1
          {
              class ConnectionManager
              {
                  public static SqlConnection getConnection()
                  {
                      try {
                          String conn = ConfigurationManager.ConnectionStrings["Test"].ToString();
                          SqlConnection sc = new SqlConnection(conn);
                          return sc;
                      }
                      catch (Exception e)
                      {
                          MessageBox.Show(e.Message);
                          return null;
                      }
                  }
              }
          }
      
      
       private DataTable getData()
              {
                  try
                  {
                      SqlConnection conn = ConnectionManager.getConnection();
                      conn.Open();
                      String sql = "SELECT * FROM Appliance_Manufacturers";
                      SqlCommand cmd = new SqlCommand(sql, conn);
                      SqlDataAdapter da = new SqlDataAdapter(cmd);
                      DataTable dt = new DataTable();
                      da.Fill(dt);
                      conn.Close();
                      return dt;
                  }catch(Exception e)
                  {
                      MessageBox.Show(e.Message);
                      return null;
                  }
              }
      
              private bool addManufacture(String name)
              {
      
                  try
                  {
                      SqlConnection con = ConnectionManager.getConnection();
                      con.Open();
                      string query = "INSERT INTO Appliance_Manufacturers (Manufacturer) VALUES('" + name + "')";
                      SqlCommand cmd = new SqlCommand(query, con);
                      int status = cmd.ExecuteNonQuery();
                      con.Close();
                      return (status == 1);
                  }
                  catch (SqlException e)
                  {
                      MessageBox.Show(e.Message);
                      return false;
                  }
              }
          }
      

      intvaxis

      【讨论】:

      • intvaxis 是什么?
      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2022-06-22
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      相关资源
      最近更新 更多