- PR -

DataGridの値をXMLデータとして、DBへ保存したい

1
投稿者投稿内容
Hiro
会議室デビュー日: 2007/06/08
投稿数: 13
投稿日時: 2007-06-11 15:09
ASP.NET2003のC#で開発を初めて、1ヶ月ぐらいの者です。

DataGridの値をXMLデータとして、DB(SQL Server2005)の
テーブルにあるXMLデータ型の項目に保存がしたいです。

string型にXMLの形式で値を代入して、保存すればいいのかと思い
以下のようにコーティングをしました。

-----------------------------------------------------------------------------
string aaa;

strAAA = "<?xml version=" + @"""1.0""" + " encoding=" + @"""utf-8""" + "?>";
strAAA += "<aaa>";
foreach(DataGridItem GridItem in DataGrid1.Items)
{
strAAA += "<bbb>";
strAAA += "<xxx>" + GridItem.Cells[0].Text + "</xxx>"
strAAA += "<yyy>" + GridItem.Cells[1].Text + "</yyy>"
strAAA += "</bbb>";
}
strAAA += "</aaa>";

string strSql1 = "INSERT INTO Table1(XMLDATA) VALUES(@CXMLData)";

string sConnectInfoString = "Data Source=XXXX;" +
"Integreated Security=False;" +
"Initial Catalog=YYYY;" +
"User Id=ppp;Password=qqq;";

SqlConnection cConnectInfo = new SqlConnection(sConnectInfoString);
SqlCommand cCommand = new SqlCommand(strSql1, cConnectInfo);

cCommand.Parameter.Add( new SqlParameter("@CXMLData",strAAA));

DBオープン
SqlTransaction sqlTran = cConnectIndo.BeginTransaction();
cCommand.Transaction = sqlTran;

try
{
cCommand.ExecuteNonQuery();
sqlTran.Commint();
}
catch( SqlException ex )
{
}
DBクローズ
-----------------------------------------------------------------------------

というような感じで、作成したのですが、
”XMLの解析: エンコードを切り替えられません。”
というエラーが出てしまいます。

strAAAに最初のおまじない<?xml・・・>の代入方法が
間違っているとはおもうのですが、
どうやっていれればいいのか、わかりません。

もし、string以外にも方法があれば、
教えていただけないでしょうか?

よろしくお願いします。
Hiro
会議室デビュー日: 2007/06/08
投稿数: 13
投稿日時: 2007-06-11 15:19
連続投稿ですが
コーティング部分に記述のみの間違いがありました。
string aaa → string strAAA
です。
かといって、エラーが解消されたわけでもありません。

さらに、追加で質問を・・・
タグの間に改行(エスケープシーケンス)をいれたいのです。

よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-06-12 08:10
文字列で+演算子はコストが高いので、使わないほうがいいです。メモリが一時的に二重に取られるんですよ。

DataGrid.DataSource には、なにを指定していますか?それを XML シリアライズすれば、自分で XML を書く必要はありません。書くにしても、System.XML 名前空間のクラスを使いましょう。
_________________
Hiro
会議室デビュー日: 2007/06/08
投稿数: 13
投稿日時: 2007-06-15 17:02
Jittaさん、ありがとうございます。

ネットが見れない環境にいきなり出張に
なってしまい、返答が遅れて申し訳ございません。

DataGrid.DataSourceにはDataSetを指定してました。
それをXmlSerializerに変更して、作り直してみます。

XMLのクラスやメンバ等、自分が実施したい事に
どれを使用していいかよくわからずに、
強引にstringで実行したのが
余計裏目に出てしまったので、
XMLの使用方法を勉強したほうが
何日も悩まずできたのかもしれません。

今から、XMLの使用方法で悩んでみます。
1

スキルアップ/キャリアアップ(JOB@IT)