我在asp.NET中创建了一个Web表单,遗憾的是由于某些限制(内部),我没有能力使用SQL。每当用户点击提交时,我就有了将数据导出到CSV文件的想法。
这样做的目的是让我们有一个计算机名称,安装的软件,Serial#等列表,以便跟踪。
我从来没有做过这样的事情,因为我已经习惯了SQL(初学者级别),这是否可行,我将如何做到(以代码形式)。我用谷歌搜索了它,所有我得到的是网格视图和其他我不想使用的形式,即使那些看起来比我想做的更复杂。任何帮助将不胜感激。
我正在使用C#后端对此进行编码。
为了澄清,这将是我们网络上的单个CSV文件,此Web表单仅在内部使用。因此,每当有人点击提交按钮时,它都会添加一个新的"行"到同一个CSV文件。因此,最后我们有一个CSV文件,其中包含计算机名称和其他信息列表。
答案 0 :(得分:1)
通常,您有一个表示数据的模型类。这是一个:
public class Computer
{
public string SerialNumber {get; set;}
public string Name {get; set;}
public List<string> InstalledSoftware {get; set;}
}
既然你有一个可以代表数据的类,那只需要保存或序列化它。您无法访问SQL Server数据库。没关系。还有其他选择。您可以将其存储为结构化文件格式。 CSV对此不利,因为每台计算机可能有多个InstalledSoftware,并且很难用CSV正确处理它。但是其他基于文本的格式(例如XML和JSON)非常适合这种情况。你也可以使用&#34; NoSQL&#34;类型数据库,例如MongoDB或RavenDB。您也可以使用非常轻量级的SQLite。
让我们从一些样本数据开始。
List<Computer> computers = new List<Computer>();
computers.Add(new Computer(){
SerialNumber="ABC123",
Name="BOB-LAPTOP",
InstalledSoftware = new List<string>(){
"Notepad", "Visual Studio", "Word"
}
});
computers.Add(new Computer(){
SerialNumber="XYZ456",
Name="JASON-WORKSTATION",
InstalledSoftware = new List<string>(){
"Notepad++", "Visual Studio Code", "Word"
}
});
computers.Add(new Computer(){
SerialNumber="LMN789",
Name="NANCY-SURFACE3",
InstalledSoftware = new List<string>(){
"Outlook", "PowerPoint", "Excel"
}
});
然后,这只是保存数据的问题。让我们尝试使用XML:
var xmlSerializer = new XmlSerializer(typeof(Computer));
using(var stringWriter = new StringWriter())
{
using (var xmlWriter = XmlWriter.Create(stringWriter))
{
xmlSerializer .Serialize(writer, computers);
var xml = stringWriter.ToString();
File.WriteAllText(Server.MapPath("~/App_Data/computers.xml"));
}
}
或者使用JSON:
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(computers);
File.WriteAllText(Server.MapPath("~/App_Data/computers.json"));
使用MongoDB:
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("ComputerDB");
var computerCollection= database.GetCollection<Computer>("Computers");
foreach(var computer in computers)
{
computerCollection.Insert(computer);
}
注意,我没有测试了这段代码。有可能的错误。我的目标是给你一个起点,不一定是100%的工作代码。我暂时没有序列化XML,我通常使用JSON.NET而不是内置的JavaScriptSerializer。
另请注意,如果两个用户可能同时访问数据任何的可能性,那么您需要注意XML和JSON方法以避免两个人试图一次写入文件。 MongoDB会更好,但你必须在某处安装服务器软件。