江湖救急,发的第三张贴,大侠请进。 问题:软件开发,在软件中怎么存储数据,用什么存储?不用sqlserver。求个解决方案。注:存储数据的方式类似在sqlsever中的存储,增删查改,重要是数据表。谢谢各位大侠,在下都发了三张贴了,希望能解决问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sqlite / access / xml 行吗? 你要先确定用不用数据库用,非sqlserver,有很多选择,access,sqlite,mysql,sybase,oracle都可以。不用,自己实现类似操作,文件读写,或是xml做数据源。 xml,access,sqllitetxt都可以实现 file.readalltextwritealltextXML操作类 excel/xml/txt/ini/access 等等... 你是不是不要存到数据库中啊,那就存在到文件中xml,txt,要用的时候再解析出来好了 XML+Linq...单机小数据量效果和数据库一样... SQLite 你想要存储什么数据?很多储存的载体啊,看你适合那个了sqlite / access / xml / file.readalltext / writealltext(有的是直接拿楼上的...呵呵) ADO.net 可以把除了数据库以外的 execel,xml,txt 当作数据源。发个txt为数据源的你看看,其他都类似。 string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;"+@"Data Source=.\;"+"Extended Properties=\"text;HDR=yes;FMT=Delimited\";"; OleDbConnection conn = new OleDbConnection(connectionString); DataTable dt=new DataTable(); try { conn.Open(); OleDbDataAdapter da = new OleDbDataAdapter("select * from employee.txt",conn); da.Fill(dt); dataGridView1.DataSource = dt; } catch (Exception ex) { MessageBox.Show(ex.Message); }需要两个文件 ,一个是employee.txt,另一个是schema.ini--------------employee.txt-----------"employeeId","employeeName"1,"Tom"2,"Joy"---------------schema.ini------------[employee.txt]Format=CSVDelimitedColNameHeader=True<axScanRows=0Character=OEMCol1=employeeId Long Width 4Col2=employeeName Text Width 100这个是架构文件。 xml也是不错的选择,特别是使用linq,查询起来很快很方便。 “XML+Linq...单机小数据量效果和数据库一样...”,谢谢还没用过 。 “XML+Linq”,应该就是它了,各位大侠能给个xml+Linq的应用实例吗?六楼给的操作类很不错,谢谢。遗憾的是没有用到Linq。内容如下:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Xml;namespace tsleyyg.XML{ class opxml { /// <summary> /// XmlHelper 的摘要说明 /// </summary> public class XmlHelper { public XmlHelper() { } /// <summary> /// 读取数据 /// </summary> /// <param name="path">路径</param> /// <param name="node">节点</param> /// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param> /// <returns>string</returns> /************************************************** * 使用示列: * XmlHelper.Read(path, "/Node", "") * XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute") ************************************************/ public static string Read(string path, string node, string attribute) { string value = ""; try { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode xn = doc.SelectSingleNode(node); value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value); } catch { } return value; } /// <summary> /// 插入数据 /// </summary> /// <param name="path">路径</param> /// <param name="node">节点</param> /// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param> /// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param> /// <param name="value">值</param> /// <returns></returns> /************************************************** * 使用示列: * XmlHelper.Insert(path, "/Node", "Element", "", "Value") * XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value") * XmlHelper.Insert(path, "/Node", "", "Attribute", "Value") ************************************************/ public static void Insert(string path, string node, string element, string attribute, string value) { try { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode xn = doc.SelectSingleNode(node); if (element.Equals("")) { if (!attribute.Equals("")) { XmlElement xe = (XmlElement)xn; xe.SetAttribute(attribute, value); } } else { XmlElement xe = doc.CreateElement(element); if (attribute.Equals("")) xe.InnerText = value; else xe.SetAttribute(attribute, value); xn.AppendChild(xe); } doc.Save(path); } catch { } } /// <summary> /// 修改数据 /// </summary> /// <param name="path">路径</param> /// <param name="node">节点</param> /// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param> /// <param name="value">值</param> /// <returns></returns> /************************************************** * 使用示列: * XmlHelper.Insert(path, "/Node", "", "Value") * XmlHelper.Insert(path, "/Node", "Attribute", "Value") ************************************************/ public static void Update(string path, string node, string attribute, string value) { try { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode xn = doc.SelectSingleNode(node); XmlElement xe = (XmlElement)xn; if (attribute.Equals("")) xe.InnerText = value; else xe.SetAttribute(attribute, value); doc.Save(path); } catch { } } /// <summary> /// 删除数据 /// </summary> /// <param name="path">路径</param> /// <param name="node">节点</param> /// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param> /// <param name="value">值</param> /// <returns></returns> /************************************************** * 使用示列: * XmlHelper.Delete(path, "/Node", "") * XmlHelper.Delete(path, "/Node", "Attribute") ************************************************/ public static void Delete(string path, string node, string attribute) { try { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode xn = doc.SelectSingleNode(node); XmlElement xe = (XmlElement)xn; if (attribute.Equals("")) xn.ParentNode.RemoveChild(xn); else xe.RemoveAttribute(attribute); doc.Save(path); } catch { } } } }} xml呀,和sql数据库差不多的,读取很方便 udp程序耗完CPU 如何在删除gridview的一行数据前,弹出一个提示 关于CS结构的系统 SQL 跨数据库 复制表? ActiveX 证书问题 真的火了 如何理解装箱、坼箱操作? 运用此操作时对系统性能有什么影响? html代码了与页面内容转换问题 如何从string(xml形式)转换到dataset 查询总和SQL WPF DataGrid 选择一行直接传递一个id 利用SQL 语句进行查询这行 textbox保存到xml有报错,无解,求助
用,非sqlserver,有很多选择,access,sqlite,mysql,sybase,oracle都可以。
不用,自己实现类似操作,文件读写,或是xml做数据源。
txt都可以实现
writealltext
XML操作类
sqlite / access / xml / file.readalltext / writealltext(有的是直接拿楼上的...呵呵)
发个txt为数据源的你看看,其他都类似。
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;"+@"Data Source=.\;"+"Extended Properties=\"text;HDR=yes;FMT=Delimited\";";
OleDbConnection conn = new OleDbConnection(connectionString);
DataTable dt=new DataTable();
try
{
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from employee.txt",conn);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}需要两个文件 ,一个是employee.txt,另一个是schema.ini
--------------employee.txt-----------
"employeeId","employeeName"
1,"Tom"
2,"Joy"
---------------schema.ini------------
[employee.txt]
Format=CSVDelimited
ColNameHeader=True
<axScanRows=0
Character=OEM
Col1=employeeId Long Width 4
Col2=employeeName Text Width 100
这个是架构文件。
内容如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;namespace tsleyyg.XML
{
class opxml
{
/// <summary>
/// XmlHelper 的摘要说明
/// </summary>
public class XmlHelper
{
public XmlHelper()
{
} /// <summary>
/// 读取数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns>string</returns>
/**************************************************
* 使用示列:
* XmlHelper.Read(path, "/Node", "")
* XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
************************************************/
public static string Read(string path, string node, string attribute)
{
string value = "";
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
}
catch { }
return value;
} /// <summary>
/// 插入数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param>
/// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "Element", "", "Value")
* XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value")
* XmlHelper.Insert(path, "/Node", "", "Attribute", "Value")
************************************************/
public static void Insert(string path, string node, string element, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (element.Equals(""))
{
if (!attribute.Equals(""))
{
XmlElement xe = (XmlElement)xn;
xe.SetAttribute(attribute, value);
}
}
else
{
XmlElement xe = doc.CreateElement(element);
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
xn.AppendChild(xe);
}
doc.Save(path);
}
catch { }
} /// <summary>
/// 修改数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "", "Value")
* XmlHelper.Insert(path, "/Node", "Attribute", "Value")
************************************************/
public static void Update(string path, string node, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
doc.Save(path);
}
catch { }
} /// <summary>
/// 删除数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Delete(path, "/Node", "")
* XmlHelper.Delete(path, "/Node", "Attribute")
************************************************/
public static void Delete(string path, string node, string attribute)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xn.ParentNode.RemoveChild(xn);
else
xe.RemoveAttribute(attribute);
doc.Save(path);
}
catch { }
}
}
}
}