に書き込まれる前に、私は、データベースの列にXMLのノードを書いているが、私はXMLが再びテーブルに書き込まれる前に、データベースからすべての(*)を削除したいテーブルからすべてを削除します。は、XMLデータがテーブル
は今のところ「100」のユーザーIDを持つユーザーは、DBに挿入されている場合、コードがdupesをチェックしませんし、私はデシベル以上1ユーザID」100年代を持っています。カラムid(例えば)がxmlのidノードと一致するかどうかを確認する必要があります。一致がある場合、テーブル内の一致が、私は機能を作成したテーブルに
をID、V、およびノードを挿入しない場合は、Vおよびノードを更新し、private void deleteFromDb(string table)
が、私は(それを呼び出すように見えるカントXMLデータがテーブルに挿入される前に、最初に正しく実行した場合)。しかし、これはすべてのデータをワイプが、ページにアクセスする最後の人は
<%@ Page Language="C#"%>
<%@ Import namespace="System.Net"%>
<%@ Import namespace="System.Data"%>
<%@ Import namespace="System.Data.SqlClient"%>
<%@ Import namespace="System.IO"%>
<%@ Import namespace="System.Xml"%>
<%@ Import Namespace="System" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server" language="C#">
public class XML
{
internal string connString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString();
private void add2Db(string table, string sqlRows, string sqlValues)
{
string sql = String.Format("INSERT INTO {0} ({1}) VALUES ({2})", table, sqlRows, sqlValues);
using (SqlConnection dbConn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(sql, dbConn))
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
}
}
private void deleteFromDb(string table)
{
string sql = String.Format("DELETE *", table);
using (SqlConnection dbConn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(sql, dbConn))
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
}
}
public void parseXML(XmlDocument doc)
{
string tsLogpro = "";
string sqlRows = "";
string sqlValues = "";
//SELECT NODE: logPro
foreach (XmlNode logPro in doc.SelectNodes("broadcasting"))
{
tsLogpro = logPro.SelectSingleNode("@ts").InnerText;
//SELECT CHILD NODE: logPro
foreach (XmlNode child in logPro.ChildNodes)
{
//GET ROWS
foreach (XmlNode rows in child.Attributes)
{
sqlRows += rows.Name + ", ";
}
//GET VALUES
foreach (XmlNode values in child.Attributes)
{
sqlValues += "'" + values.InnerText + "', ";
}
sqlRows = sqlRows.Substring(0, sqlRows.Length - 2);
sqlValues = sqlValues.Substring(0, sqlValues.Length - 2);
//Response.Write("\n\n");
//Response.Write(sqlRows);
//Response.Write("\n" + sqlValues);
add2Db("flashcoms_chat7_broadcast", sqlRows, sqlValues);
sqlValues = "";
sqlRows = "";
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ExpiresAbsolute = DateTime.Now;
Response.AddHeader("Content-type", "text/plain");
HttpRequest request = HttpContext.Current.Request;
System.IO.Stream body = request.InputStream;
System.Text.Encoding encoding = request.ContentEncoding;
System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
XmlDocument doc = new XmlDocument();
string s = reader.ReadToEnd();
if (Request.Params["action"] != string.Empty && Request.Params["action"] == "test")
{
doc.InnerXml = "" +
"<broadcasting ts=\"12345\">" +
"<u id=\"1\" v=\"true\" a=\"true\" />" +
"<u id=\"2\" v=\"true\" a=\"true\" />" +
"<u id=\"3\" v=\"true\" a=\"false\" />" +
"<u id=\"4\" v=\"true\" a=\"true\" />" +
"<u id=\"5\" v=\"true\" a=\"true\" />" +
"</broadcasting>";
}
else if (!string.IsNullOrEmpty(s))
{
doc.InnerXml = s;
}
// Starting at line 111 in your original post
XML oXML = new XML();
oXML.deleteFromDb("f_chat7_broadcast")
oXML.parseXML(doc);
Response.Write("Done");
Response.End();
}
/*
*
*
SET ANSI_NULLS ON
GO
USE [DB]
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[f_chat7_broadcast](
[id] [nchar](100) NULL,
[v] [nchar](10) NULL,
[a] [nchar](10) NULL
) ON [PRIMARY]
GO
*
*/
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>blah blah</title>
</head>
<body>
<form id="Form2" method="post" runat="server"><% Page_Load(null, null); %></form>
</body>
</html>
なぜあなたはページを呼び出しているを持っていません_Load(null、null)? Page_Loadは自動的に起動します(ページのライフサイクルの一部です)。 – Tim
テーブルは一定期間にわたってデータを保持するか、または一時テーブルですか?前者の場合、XML文書からデータを読み込む前にテーブル内のデータを削除するだけで、重複したユーザーIDを避けることができます。 – Tim
井戸ティム、 'id'ノードと 'id'カラムをチェックするソリューションはありますか? IDがテーブルに存在する場合は、a列とv列のみを更新し、そうでなければ、id、a、およびvデータをXMLからテーブルに挿入しますか? – Patriotec