我是C#的新手,我正在努力开始。
我能够用一些按钮和东西制作一个简单的表单程序。但这是我的问题:
如何 - 或者在程序中存储用户输入的最佳做法是什么?
假设我创建了一个简单的程序,用户可以通过文本框输入文本行,并通过按钮将其“添加”到列表中。 当用户关闭并再次打开程序时,它应该记住他输入的每一行。 (就像期刊一样)。
这是如何最好地完成的?我搜索过谷歌,但它根本没有帮助我。我应该使用数据库吗?保存并读取文本文件? (ini / xml?)
这个简单的程序需要安装吗?或者它可以作为可执行的exe文件工作 - 并仍然在用户计算机上保存/读取?
致以最诚挚的问候(对不起我的英语)。
答案 0 :(得分:1)
目前最简单的选择是使用XML文件。我不会尝试ini文件,除非你真的需要特定的东西。
如果您知道只需要存储来自单个文本输入区域的数据,那么文本文件是一个不错的选择。
XML允许您通过序列化直接从对象存储和检索数据。
不 - 简单的可执行文件不需要安装程序 - 但如果您不创建安装程序,则无法轻松添加快捷方式等内容。
答案 1 :(得分:1)
这种最简单,最易扩展的方式是使用一些嵌入式数据库。 我,就个人而言,会选择Sqlite。在下载部分,您也可以找到.NET的二进制文件。
还有很多其他可能的选择,但这只是我会选择从我的问题中提供的信息。
希望这有帮助。
答案 2 :(得分:0)
如果你是初学者,你就有了正确的想法 您可以将数据存储在text / xml文件或数据库中 你可以像@dice指出的那样使用XML,但是开始编程到XML可能会让人望而生畏 我建议去文本文件存储,并了解事情是如何工作的。
这里是great article以IO编码开始的。稍后改变这个
string[] lines = {"First line", "Second line", "Third line"};
指向用户输入。
答案 3 :(得分: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;
}
}
}