[英]want to import data from XML to SQLite database
我已經在 c# 中從我的 SQLite 數據庫生成(導出)一個 XML。 現在,我需要將這些數據從 XML 導入到一個空的 sqlite 數據庫。我還需要在將數據插入表時驗證內容。 我從數據庫生成的 xml 是 -
<root>
<name1>
<names>
<id>5</id>
<class>space</class>
<from>Germany</from>
<to>France</to>
<through>
<via>
<id>7</id>
<route>Vienna<route>
</via>
</through>
</names>
<mynames3>Black</mynames3>
<mynames4>Hawkins</mynames4>
</name1>
<name2>
<newNames>
<id>8</id>
<path>Road</path>
<dest>USA</dest>
<through>
<route1>
<id>5</id>
<naviagte>Britain</naviagte>
<naviagte2>Holland</naviagte2>
<naviagting2>
<naviagtes2>
<naviagte5>France</naviagte5>
<naviagte6>US</naviagte6>
<naviagte7>Canada</naviagte7>
<naviagtes2>
</naviagting2>
<naviagte11>Russia</naviagte11>
<naviagte12>Poland</naviagte12>
</route1>
<route1>
<id>2</id>
<naviagte>Canada</naviagte>
</route1>
</through>
</newNames>
</name2>
<name3>H2V3</name3>
<name4>H5V8</name4>
</root>
你能給我任何建議嗎? 我正在嘗試以下方法。
SqliteConnection sqlCon = new SqliteConnection("Data Source=" + dataPath + "/Empty.db3");
sqlCon.Open();
SqliteCommand sqlCmd = new SqliteCommand(sqlCon);
DataSet ds = new DataSet();
ds.ReadXml(Path.Combine(syncPath, tableName + "_4.xml"), XmlReadMode.ReadSchema);
foreach(DataTable dt in ds.Tables)
{
//Get field names
string sqlString = "INSERT into " + tableName + " (";
string valString = "";
var sqlParams = new string[dt.Rows[0].ItemArray.Count()];
int count = 0;
foreach(DataColumn dc in dt.Columns)
{
sqlString += dc.ColumnName + ", ";
valString += "@" + dc.ColumnName + ", ";
sqlParams[count] = "@" + dc.ColumnName;
count++;
}
valString = valString.Substring(0, valString.Length - 2);
sqlString = sqlString.Substring(0, sqlString.Length - 2) + ") VALUES (" + valString + ")";
sqlCmd.CommandText = sqlString;
foreach(DataRow dr in dt.Rows)
{
for (int i = 0; i < dr.ItemArray.Count(); i++)
{
sqlCmd.Parameters.AddWithValue(sqlParams[i], dr.ItemArray[i] ?? DBNull.Value);
}
sqlCmd.ExecuteNonQuery();
}
}
在將數據插入空的 SQLite 數據庫之前,我需要驗證內容。 你能告訴我我應該采用哪種方法嗎?
朋友,您可以檢查此鏈接,它將幫助您在SQLite中導入和導出XML
http://code.google.com/p/sqlite-manager/wiki/Import_Export_Files
如果有幫助,請首先使用 XML2CSharp 網站生成 C# 類。 您將反序列化為這個生成的類。
接下來創建您需要將反序列化數據存儲到的類。 將這些類創建為表。
最后,您(幾乎)從反序列化數據復制到 SQLite 容器類中,然后存儲這些類。
反序列化在 4 行中執行...
public static List<Jobs> JobData = new List<Jobs>();
var s = new XmlSerializer(typeof(Jobs));
var r = new StreamReader(xmlFilename);
JobData.Add((Jobs)s.Deserialize(r));
r.Close();
如果有幫助,我今晚會在 github 上得到一些東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.