보고 응용 프로그램의 결과 인 DataSet을 SQL Server 2000의 테이블에 저장해야합니다. DB에 파일을 저장하는 것과 같은 방식으로 데이터를 저장합니까?()?SQL Server 2000에서 XML 데이터 집합 저장
답변
SQL Server 2000은 실제로 XML blob을 처리 할 수있는 기능이 없습니다. 전용 XML 유형도 없으며 VARCHAR (MAX) 데이터 유형의 양식으로 큰 텍스트를 쉽게 지원하지도 않습니다. 둘 다 SQL Server 2005 이상에서 사용할 수 있습니다.
2000 년을 절대적으로 고수하는 경우 XML을 TEXT
열 (또는 NTEXT
- 문자 당 2 바이트 - ASCII 형식이 아닌 문자 집합을 지원해야하는 경우 XML에 저장하는 것이 가장 좋습니다. , 히브리어, 아랍어 등).
TEXT 열 데이터 형식은 많은 번거 로움없이 실제로 많은 작업을 할 수 없다는 점에서 그다지 유용하지 않습니다. 실제로 텍스트 데이터를 검색하거나 바꿀 수는 없습니다. 그것은 엉망입니다. 일반적인 문자열 방법은 작동하지 않습니다. 실제로는 "저장하고 잊어 버리는"종류의 얼룩입니다. .....
업데이트 : 의 경우 파일의 내용을 검사해야합니다. (실제로?) 데이터베이스에 저장되면 IMAGE
데이터 형식을 사용할 수도 있습니다. 하여 데이터베이스에서 바이트의 덩어리에서 읽을
private void AddFileToDatabase(string filename)
{
using(SqlConnection con = new SqlConnection("server=***;database=***;integrated security=SSPI;"))
{
string insertStmt = "INSERT INTO dbo.YourTableName(DocFilename, DocContent) VALUES(@FileName, @Content)";
using(SqlCommand cmd = new SqlCommand(insertStmt, con))
{
cmd.Parameters.AddWithValue("@FileName", filename);
cmd.Parameters.Add("@Content", SqlDbType.Image);
cmd.Parameters["@Content"].Value = File.ReadAllBytes(filename);
con.Open();
int result = cmd.ExecuteNonQuery();
con.Close();
}
}
}
그리고 기본적으로 같은 일 :
가 SQL 서버에 파일을 저장하려면 같은 것을 할. 또는 이것을 멋진 저장 프로 시저에 패키지 할 수 있습니다. 완전히 당신에게 달려 있습니다.TEXT/NTEXT
을 사용하는 경우 실제 문자열 (예 : Word와 같은 이진 파일을 실제로 사용할 수는 없지만 XML 또는 HTML 또는 기타 형식으로 보고서에서 출력하는 경우 TEXT/NTEXT도 사용할 수 있습니다 (이 경우 cmd.Parameters.Add("@Content", SqlDbType.Text);
만 사용).
serialize
(이진수 xml) 데이터 집합을 저장하고 데이터베이스에 저장할 수도 있습니다.
SQL Server 2000 DB입니다. 문서를 저장하고 필요에 따라 다시로드하면됩니다. 문서 등을 검색하지 않을 것입니다. –
DataSet의 문자열 표현을 반환하는 dataset.GetXML()이 있습니다. 텍스트 데이터 유형 인 경우 해당 필드를 사용하여 저장할 수 없습니까? –
@Saif : 예, 확실합니다 - 데이터 집합을 나타내는 XML 문자열을 가져 와서 해당 문자열을 SQL Server 2000의 TEXT/NTEXT 필드에 저장할 수 있습니다. –