내가했던 모든 것 : 비주얼 스튜디오 2013 C# 프로젝트에서DataSet 개체를 인스턴스화하면 CRUD 작업을 위해 SQL 서비스 기반 데이터베이스에 자동으로 연결이 생성됩니까? 여기
, 나는 (파일의 .mdf) 서비스 데이터베이스를 만들었습니다. 참고 : 이름을 Database1.mdf에서 fghLocalDB.mdf로 변경했습니다.
이 데이터베이스는 서버 탐색기에서 열었습니다.
테이블 디자이너를 사용하여 Country 및 CarbonDioxide라는 2 개의 테이블을 만들었습니다.
국가 테이블의 데이터 테이블에 표시된대로 국가 테이블에 항목을 추가했습니다.
내 응용 프로그램에서 사용할 수있는 데이터 세트를 만들려면 다음을 수행했습니다. 상단 메뉴 표시 줄의 "프로젝트"옵션을 클릭하고 드롭 다운에서 "새 데이터 소스 추가 ..."옵션을 클릭하여 데이터 소스를 만들었습니다.
이 내 프로젝트 파일이 시점에서 어떻게 생겼는지입니다 .
나는이 방법이 데이터베이스에 쓰는 데 필요한 모든 것이라고 생각하는 기본 코드에서 다음 코드를 작성했습니다.
// Create a connection to the DataSet and TableAdapters that will communicate with our // local database to handle CRUD operations. fghLocalDBDataSet dataSet = new fghLocalDBDataSet(); fghLocalDBDataSetTableAdapters.CountryTableAdapter countryTableAdapter = new fghLocalDBDataSetTableAdapters.CountryTableAdapter(); try { // Insert a row into Country table. EDIT 1 Will comment after first program run. Console.WriteLine(countryTableAdapter.Insert("United States")); // Actually writeback information to the database? // dataSet.AcceptChanges(); EDIT 2 commented this as LeY suggested it was not needed. // EDIT 3 Validation code as suggested by Ley. var dt = new fghLocalDBDataSet.CountryDataTable(); var adapter = new fghLocalDBDataSetTableAdapters.CountryTableAdapter(); adapter.Fill(dt); foreach (var row in dt) { // This does not get executed after a second run of the program. // Nothing is printed to the screen. Console.WriteLine("Id:" + row.Id + "----Name: " + row.Name); } Console.Read(); } catch(SqlException exception){ Console.WriteLine("ERROR: " + exception.ToString()); } Console.ReadLine();
나는 프로그램을 실행하고 모든 것이 잘 보였다.
- 서버 탐색기에서이 테이블을 마우스 오른쪽 버튼으로 클릭하고 "데이터 테이블 표시"를 눌러 테이블을 열었습니다.
- "미국"행이 원하는대로 추가되지 않았습니다.
연결 고리와 관련이 있다고 생각합니다. 내 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 열었습니다.
는 여기에 연결 문자열은 데이터베이스의 속성에 문자열을보고 그 로컬 데이터베이스의 일치 확인했다. 그들은 동일합니다.
내가 복사하고 각 연결 문자열에 대한 실제 텍스트 붙여 넣기 : 프로젝트의
연결 문자열 :
데이터 원본 = (LocalDB) \의 V11.0; 인 AttachDBFilename를 = | DataDirectory를 | \ fghLocalDB.mdf; 통합 보안 = 실제 데이터베이스의 진정한
연결 문자열 (의 .mdf 파일) :
데이터 소스 = (LocalDB) \ v11.0, AttachDbFilename = C : \ Users \ gabriel \ Source \ Workspaces \ Capstone \ Sandbox \ aduclos \ QueryDataMarketConsole \ QueryDataMarketConsole \ fghLocalDB.통합 보안 = True
나는 DataDirectory | C : \ Users \ gabriel \ Source \ Workspaces \ Capstone \ Sandbox \ aduclos \ QueryDataMarketConsole \ QueryDataMarketConsole \ fghLocalDB.mdf와 같습니다. 위의 그림에서 연결 문자열의 값을 확장하기 위해 단추를 클릭했을 때 연결 속성 창이 열리고 데이터베이스 파일 이름에 대한이 경로가 있었기 때문입니다.
간단히 말해서 질문에 DataSet 개체를 인스턴스화하면 CRUD 작업을 위해 SQL 서비스 기반 데이터베이스에 자동으로 연결이 생성됩니까?
TableAdapters를 사용할 때 실제로 데이터베이스에 쓸 수 있도록 DataSet 개체를 SQL 데이터베이스에 어떻게 연결합니까?
Insert method of TableAdapter not working?
TableAdapter Insert not persisting data
Use connectionstring from web.config in source code file
내가 실제 SqlConnection 개체가 필요하십니까 :
나는 다음 링크를 읽어? 이걸 DataSet & TableAdapters에 연결하는 방법은 무엇입니까?
제안한 유효성 검사 코드를 추가하려고 시도했습니다. 그것은 자신의 줄에 "1"을 출력 한 다음 "Id : 1 ---- Name : United States"를 인쇄합니다. 그래서 그게 효과가 있다고 생각하게 해. 그러나 데이터베이스에 실제로 기록한 경우 프로그램을 종료 한 후에도 계속 유지됩니다. 그래서 실행 파일을 끝내고이 줄을 주석 처리했습니다. "Console.WriteLine (countryTableAdapter.Insert ("United States "));" "미국"은 이미 첫 번째 실행에서 데이터베이스에 있기 때문입니다. 이제 프로그램을 실행할 때 아무 것도 출력되지 않습니다. 이는 dt가 빈 테이블임을 의미합니다. 똑같은 것을 시도하고보고 할 수 있습니까? – fgharo91