C#을 사용하여 SQL Express 서버의 모든 데이터로 DataSet을 가져 오는 방법은 무엇입니까?SQL Express 서버에서 DataSet 가져 오기 C#
감사
편집 : 명확히하기 위해 나는 모든 테이블의 모든 데이터를 원하는 않습니다. 그 이유는 상대적으로 작은 데이터베이스라는 것입니다. 이전에는 DataSet의 기능을 사용하여 XML 파일에 세 개의 테이블을 모두 저장했습니다. 그러나 데이터베이스로 마이그레이션하려고합니다.
C#을 사용하여 SQL Express 서버의 모든 데이터로 DataSet을 가져 오는 방법은 무엇입니까?SQL Express 서버에서 DataSet 가져 오기 C#
감사
편집 : 명확히하기 위해 나는 모든 테이블의 모든 데이터를 원하는 않습니다. 그 이유는 상대적으로 작은 데이터베이스라는 것입니다. 이전에는 DataSet의 기능을 사용하여 XML 파일에 세 개의 테이블을 모두 저장했습니다. 그러나 데이터베이스로 마이그레이션하려고합니다.
GetSchema 메서드를 사용하여 데이터베이스의 모든 테이블을 가져온 다음 데이터 어댑터를 사용하여 데이터 집합을 채울 수 있습니다. 이런 식으로 뭔가 (이 컴파일하면 내가 모르는 난 그냥 몇 가지 코드를 붙여 그것을 약간 수정) :
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
DataTable tables = null;
DataSet database = new DataSet();
using (DbConnection connection = factory.CreateConnection())
{
connection.ConnectionString = "Data Source=(local);Initial Catalog=Northwind;Integrated Security=True";
string[] restrictions = new string[4];
// Catalog
restrictions[0] = "Northwind";
// Owner
restrictions[1] = "dbo";
// Table - We want all, so null
restrictions[2] = null;
// Table Type - Only tables and not views
restrictions[3] = "BASE TABLE";
connection.Open();
// Here is my list of tables
tables = connection.GetSchema("Tables", restrictions);
// fill the dataset with the table data
foreach (DataRow table in tables.Rows)
{
string tableName = table["TABLE_NAME"].ToString();
DbDataAdapter adapter = factory.CreateDataAdapter();
DbCommand command = factory.CreateCommand();
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "select * from [" + tableName + "]";
adapter.SelectCommand = command;
adapter.Fill(database, tableName);
}
}
편집 : 나는 그것을 조금 리팩토링하고 지금은 일하고 이제
그것은해야한다.
이DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
GetSchema 방법은 당신의 데이터베이스에서 모든 테이블을 가져 오지 않습니다 :이 라인과 연결 문자열을 변경 데이터베이스 엔진을 변경할 수 있도록 DbConnection 및 DbProviderFactories의 사용은 데이터베이스 엔진 추상화입니다, 나는 그것을 사용하는 것이 좋습니다 DataTable을 만들고 각 테이블의 모든 데이터를 DataAdapter를 사용하여 DataSet으로 가져옵니다.
질문을 다소 좁힐 필요가 있다고 생각합니다. 모두 데이터가 맞습니까? 모든 데이터베이스의 모든 테이블에있는 모든 데이터를 의미합니까? 음, 그 유일한 대답은 코드가 많습니다.입니다.
즉, System.Data.SqlClient 네임 스페이스의 클래스를 사용하여 연결하고 SQL Server Express의 데이터베이스 엔진 이야기 :
데이터베이스에서 검색 데이터에 반복 위의 링크를 클릭하여 클래스를 선택하십시오.
참고 전반적으로, 당신은 같은 SQL Server Express는 데이터베이스 엔진 같은 방법을 사용 : 여기
자세한 내용은 일부 개요 - 링크입니다 전체 SQL Server 제품의 차이점은 도구로 얻는 것보다 많으며, 익스프레스 엔진의 일부 제한 사항입니다. 그 외에는 일반적인 SQL Server 데이터베이스 엔진 설치에 사용할 클래스와 언어 만 사용할 수 있습니다.이 게시물이 귀하의 질문에 답변하지 못했다면, 자세히 설명해 주시고 귀하가 찾는 답변을 얻을 확률이 더 높습니다.
어, 죄송하지만 편집 내용이 통하지 않습니다. * 데이터베이스에서 데이터를 가져 오거나 * 데이터베이스에서 * 데이터를 가져 오시겠습니까? –
나중에, 다시 넣을 수는 있지만 더 생각하면할수록 실현 가능성은 낮아집니다. – Malfist
사실, 귀하의 질문에 실제로 답변하기에는 너무 적은 정보를 주셨습니다. 그게 당신이하기로 한 것이기 때문에, 당신 만이 당신의 질문에 대한 진정한 답을 알 수 있습니다. –