に変換されます。xmlファイルを解析し、xmlタグ名が 'key'、innerXMLが 'value'であるOrderedDictionaryデータ型に格納しています。値が読み取られ、OrderedDictionary変数に格納されるまでは正常に動作します。自動的に型文字列の値がboolean型のC#
Screenshot showing Debugger OrderedDictionary values
私はKeyValuePair
でOrderedDictionary
を読むしようとすると、キーFees
の値はFalse
として示され、System.InvalidCastExceptionのをスローしています。私はこれが型キャストの問題であることを知っているが、私の問題は、 'string'として格納されている値がどのように 'boolean'に変換されたかということです。
Image hyperlink - KeyValuePair shows Fees
as False
これは、このタスクを処理するコードの小さなスニペットです:
for (int j = 0; j < intXmlRecordFieldCount; j++) {
XmlTagname = xmlRootNode.ChildNodes[i].ChildNodes[j].Name.ToString().Trim();
xmlTagInnerValue = xmlRootNode.ChildNodes[i].ChildNodes[j].InnerXml.ToString().Trim();
DictXmlRecordColumns.Add(XmlTagname, xmlTagInnerValue);
}
foreach (KeyValuePair<string, string> kvp in DictXmlRecordColumns) {
string xmlTagName = kvp.Key;
string xmlInnerValue = kvp.Value;
DataRow[] resultset= dsResult.Tables[0].Select("ColumnName='"+xmlTagName+"'");
Console.WriteLine(resultset.Length);
if (Int32.Parse(xmlInnerValue) >= MinValue&& Int32.Parse(xmlInnerValue) <= MaxValue) {
string QueryParamColumnNames = null;
string QueryParamColumnValues = null;
foreach (KeyValuePair<string, string> SqlQueryParams in SqlQueryParams) {
QueryParamColumnNames += SqlQueryParams.Key.Trim() + ',';
QueryParamColumnValues += convertToSqlParams(SqlQueryParams.Value.Trim()) + ',';
}
QueryParamColumnValues = QueryParamColumnValues.TrimEnd(',');
sqlInsertQueries.Add("INSERT INTO " + dbTableName + " (" + QueryParamColumnNames + ") values(" + QueryParamColumnValues + ")");
}
これは誰でも助けることができる私は
<studentrecords>
<STUDENT_RECORDS>
<RollNumber>1</RollNumber>
<Name>Akshay</Name>
<Gender>Male</Gender>
<Fees>900.00</Fees>
</STUDENT_RECORDS>
<STUDENT_RECORDS>
<RollNumber>2</RollNumber>
<Name>Alex</Name>
<Age>8</Age>
<Gender>Male</Gender>
<Fees>900.00</Fees>
</STUDENT_RECORDS>
</studentrecords>
を解析しようとしていたサンプルxmlです私はこの問題に関して?
編集(1):Fees
を900.00
としてフェッチする必要がありましたが、どのようにブール値に変換されるのでしょうか。私がこれを避けることができる方法はありますか?
編集(2):追加されたXMLサンプルは
データベースにブール型の列があり、ブール値「False」の代わりに文字列値「False」を挿入しようとしているようです。数字やブール値を引用符で囲む必要はありません –
間違いを避けるためにブール値を '0'と '1'で挿入してみてください – Svekke
@SergeyBerezovskiy Bro、しかし私はクエリに関与していません。私はちょうど1つの変数から別の変数にそれを取っています。データベース操作が不要 – sapphirebox001