C#을 사용하여 저장 프로 시저 (SQL Server 2008)를 호출하고 SqlDbType.Xml 데이터 형식을 사용하는 저장 프로 시저 매개 변수에 XMLDocument를 전달하려고합니다. 오류가 발생합니다 : 매개 변수 값을 XmlDocument에서 String으로 변환하지 못했습니다. 아래는 코드 샘플입니다. XML 데이터 형식을 예상하는 저장 프로 시저에 XML 문서를 어떻게 전달합니까? 감사.XML 데이터 형식의 저장 프로 시저 호출
XmlDocument doc = new XmlDocument();
//Load the the document with the last book node.
XmlTextReader reader = new XmlTextReader(@"C:\temp\" + uploadFileName);
reader.Read();
// load reader
doc.Load(reader);
connection.Open();
SqlCommand cmd = new SqlCommand("UploadXMLDoc", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Year", SqlDbType.Int);
cmd.Parameters["@Year"].Value = iYear;
cmd.Parameters.Add("@Quarter", SqlDbType.Int);
cmd.Parameters["@Quarter"].Value = iQuarter;
cmd.Parameters.Add("@CompanyID", SqlDbType.Int);
cmd.Parameters["@CompanyID"].Value = iOrganizationID;
cmd.Parameters.Add("@FileType", SqlDbType.VarChar);
cmd.Parameters["@FileType"].Value = "Replace";
cmd.Parameters.Add("@FileContent", SqlDbType.Xml);
cmd.Parameters["@FileContent"].Value = doc;
cmd.Parameters.Add("@FileName", SqlDbType.VarChar);
cmd.Parameters["@FileName"].Value = uploadFileName;
cmd.Parameters.Add("@Description", SqlDbType.VarChar);
cmd.Parameters["@Description"].Value = lblDocDesc.Text;
cmd.Parameters.Add("@Success", SqlDbType.Bit);
cmd.Parameters["@Success"].Value = false;
cmd.Parameters.Add("@AddBy", SqlDbType.VarChar);
cmd.Parameters["@AddBy"].Value = Page.User.Identity.Name;
cmd.ExecuteNonQuery();
connection.Close();
감사합니다. 나는 일하도록했다. 다음 코드가 추가되었습니다. StringWriter sw = new StringWriter(); XmlTextWriter xw = 새 XmlTextWriter (sw); doc.WriteTo (xw); StringReader transactionXml = new StringReader (sw.ToString()); XmlTextReader xmlReader = 새 XmlTextReader (transactionXml); SqlXml sqlXml = 새 SqlXml (xmlReader); 문자열로 변환하는 것만으로는 충분하지 않았습니다. 다음과 같은 오류가 있습니다. XML 구문 분석 : 줄 1, 문자 38, 인코딩을 전환 할 수 없습니다. " 그래서 문자열로 변환 한 다음 SqlXml로 변환하여 작동했습니다. – Lakeshore
더 간단한 접근법을 사용할 수 있습니다 :'cmd.Parameters [ "@ FileContent"] .Value = new SqlXml (File.OpenRead ("file.xml"));' –