2

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

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

如何 - 或者什么是在程序中存储用户输入的最佳实践?

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

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

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

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

4

4 回答 4

2

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

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

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

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

于 2012-03-20T21:29:56.260 回答
1

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

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

希望这可以帮助。

于 2012-03-20T21:32:08.933 回答
0

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

这是一篇很棒的文章,可以从 IO 编码开始。稍后更改此

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

指向用户输入。

于 2012-03-20T21:37:12.117 回答
0
    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;
            }
        }
    }

内轴

于 2018-07-16T06:18:03.583 回答