통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 34033 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 mssql 2017 express ole db connection  | VC++ 일반 2020-01-21 오후 3:33:23
 inseogi77  inseogi77님께 메시지 보내기inseogi77님을 내 주소록에 추가합니다.inseogi77님의 개인게시판 가기 번호: 977495 추천:0  / 읽음:146

안녕하세요

 

local PC에 mssql 2017 express 을 설치하고

local PC에서 MFC로 OLE DB (CADODatabase)로 연결을 하는데 잘 안됩니다.

 

 

아래와 같이 연결하면 에러가 발생합니다.

m_pAdoDB->Open(""provider = SQLOLEDB.1;Integrated Security = SSPI;Persist Security Info = False;Initial Catalog = dss10;Data Source = (local)\\SQLEXPRESS")

 

에러 문구 입니다.

0030>> 15:53:18 Connection String = provider = SQLOLEDB.1;Integrated Security = SSPI;Persist Security Info = False;Initial Catalog = dss10;Data Source = (local)\SQLEXPRESS

CADODataBase Error

Code = 80004005

Code meaning = 지정되지 않은 오류입니다.

Source = Microsoft OLE DB Provider for SQL Server

Description = 로그인에서 요청한 데이터베이스 "dss10"을(를) 열 수 없습니다. 로그인이 실패했습니다.

 

혹시 아시는분 계신가요??

이 글에 답변 등록하기
 [답변]참고해보세요. 2020-01-21 오후 4:07:21
칡흙 번호: 977496 추천:0  

 

- SQL Server 설치 / 접속 / 쿼리 확인

- OLE DB 쿼리 확인

- 사용자 확인

- 로컬 포트 확인

- 오류 코드 검색 확인

 

- 잘 되는 예제 확인

- 책 예제 확인

 

 

//

MFC 프로그래밍 검색결과, 책 검색 : 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=pre&where=nexearch&query=MFC+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

 

//

CADODataBase Error Code = 80040e4d Code meaning = IDispatch error #3149 - Bing
http://www.bing.com/search?q=CADODataBase+Error+Code+%3D+80040e4d+Code+meaning+%3D+IDispatch+error+%233149&PC=U531&FORM=ANCMS9

PRB: ASP/ODBC/SQL Server Error 0x80040E4D "Login Failed for User '(Null)'"
http://support.microsoft.com/en-us/help/307002/prb-asp-odbc-sql-server-error-0x80040e4d-login-failed-for-user-null

Microsoft OLE DB Provider for SQL Server error '80004005' - Stack Overflow
http://stackoverflow.com/questions/15126625/microsoft-ole-db-provider-for-sql-server-error-80004005

Search - CodeProject
http://www.codeproject.com/search.aspx?q=OLE+DB&x=14&y=8&sbo=kw

OLE DB MFC - Bing
http://www.bing.com/search?q=OLE+DB+MFC&qs=n&form=QBRE&sp=-1&pq=ole+db+mfc&sc=0-10&sk=&cvid=98BC5394EDC54CFAADF4C0CFD851EF02

[MFC]OLE-DB 쉽게 사용하기 : 네이버 블로그
http://m.blog.naver.com/PostView.nhn?blogId=kmymirae&logNo=150047130430&proxyReferer=https%3A%2F%2Fwww.bing.com%2F

MFC기반의 ADO OLE DB 연동 예제) DB값 화면에 출력 : 네이버 블로그
http://blog.naver.com/PostView.nhn?blogId=kwm5376&logNo=100201079093&parentCategoryNo=&categoryNo=10

OLE DB 연결 테스트 (Oracle)
http://ideastreet.tistory.com/entry/OLE-DB-%EC%97%B0%EA%B2%B0

[MFC로 구현하는 DB 프로그래밍] ③ 모든 것은 OLE로 - ZDNet korea
http://www.zdnet.co.kr/view/?no=00000039131490

多樂
http://egloos.zum.com/rucaus/v/2287643

mfc 원격지의 DBMS접속 방법?? odbc, dao, ado, oledb
http://social.msdn.microsoft.com/Forums/ko-KR/2383d52a-c8ef-4c5e-9a97-8ea0960755d4/mfc-dbms-odbc-dao-ado-oledb

Soyoja Blog :: C++ 에서 간단하게 OLE DB 사용하기 (ODBC vs OLEDB)
http://soyoja.com/352

Data Access Programming (MFC-ATL) | Microsoft Docs
http://docs.microsoft.com/en-us/cpp/data/data-access-programming-mfc-atl?view=vs-2019

OLE DB Templates, Attributes, and Other Implementations | Microsoft Docs
http://docs.microsoft.com/en-us/cpp/data/oledb/ole-db-templates-attributes-and-other-implementations?view=vs-2019

 

 

 

//

Description = 로그인에서 요청한 데이터베이스 "dss10"을(를) 열 수 없습니다. 로그인이 실패했습니다. - Bing
http://www.bing.com/search?q=Description+%3D+%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%97%90%EC%84%9C+%EC%9A%94%EC%B2%AD%ED%95%9C+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4+%22dss10%22%EC%9D%84(%EB%A5%BC)+%EC%97%B4+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.+%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%9D%B4+%EC%8B%A4%ED%8C%A8%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.&PC=U531&FORM=ANCMS9

Visual Studio를 사용 하 여 ASP.NET 웹 배포: 문제 해결 | Microsoft Docs
http://docs.microsoft.com/ko-kr/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/troubleshooting

SQL 2005 DB 접근 | 마을 :: 컨텐츠 상세보기
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=12&MAEULNo=6&no=6346&ref=6331

"Login failed for user" error message when you log on to SQL Server
http://support.microsoft.com/ko-kr/help/555332/login-failed-for-user-error-message-when-you-log-on-to-sql-server

데이터베이스 엔진 이벤트 및 오류 - SQL Server | Microsoft Docs
http://docs.microsoft.com/ko-kr/sql/relational-databases/errors-events/database-engine-events-and-errors?view=sql-server-ver15

[MS-SQL]MS-SQL Error Code : 네이버 블로그
http://blog.naver.com/PostView.nhn?blogId=sky0210love&logNo=20199235665&parentCategoryNo=14&categoryNo=

(주)서브이즈 – 블로그입니다. 많은 정보 도움이 되었으면 좋겠습니다.
http://blog.servis.co.kr/

Code = 80004005 - Bing
http://www.bing.com/search?q=Code+%3D+80004005&PC=U531&FORM=ANCMS9

오류코드: 0x80004005 - Microsoft 커뮤니티
http://answers.microsoft.com/ko-kr/windows/forum/windows_7-networking/%EC%98%A4%EB%A5%98%EC%BD%94%EB%93%9C-0x80004005/3b1dd77b-9b76-4d99-b555-e1e9619d7af1?auth=1

 

 

 

//윈도우10 - MSSQL 2005 Express 설치 오류

해결 방법
SQLServer2005_SSMSEE_x64.exe - 파일 속성 - 호환 모드
 
//
SQL Server Management Studio Express 에서. DB 생성이 안되면. 관리자 권한 '으로 실행.
 
 
//MSSQL 2005 EXPRESS 연결 안될때. 

해결 방법 - SQLEXPR_ADV_KOR.EXE 설치하면 됨. ★★★★★

Microsoft SQL Server 2005 Express Edition with Advanced Services 서비스 팩 2
https://www.microsoft.com/ko-kr/download/details.aspx?id=12980
 

 

 

//임시 접속 방법

ODBC 건드리다보면?? 재설치를 해도. MSSQL 접속이 안되는 경우가 있기도 합니다. ㅇ_ㅇ;;

그럴때는. 로컬 시스템 == localhost 로 계정을 등록하면. 접속이 됩니다.

 

일단. 임시 접속해서. 디비 계정 추가해서. 관리를 하시면 됩니다. ㅇ_ㅇ;; (관리자 권한)

http://blog.naver.com/PostView.nhn?blogId=g00dmoney&logNo=220430856730&parentCategoryNo=&categoryNo=32&viewDate=&isShowPopularPosts=true&from=search

 

//

DB 파일을. 새로 만들어도. 이미 만들어진 경우. 만들어 지지 않습니다.

이미 만든 DB 파일을 삭제 하여도. 연결만 해제되고. 삭제가 안되기도 하니. DB 파일은. 폴더에서. 확인해보셔야 합니다.

 

//

확인해보니. 여기는 안건드려도 되네요. ㅇ_ㅇ;;

 

//

localhost 로 접속만 하면 됨. (관리자 권한)

 

 

 

 

 

------------------------------------------------------------------

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=69&MAEULNo=28&no=20203

MSSQL 을 어려워 하시는 분들이 계시기에. 문서를 작성해 봅니다.

MySQL과 비슷하지만. 무겁습니다. MSSQL은 상용이라서 돈을 내야 합니다.

정식 교육 기관에서 배우시는것이 좋습니다. 이 문서는 체험용 문서입니다.

사실. 모르면 뭐든지 어렵습니다. 단 한줄 때문에 1년을 고생할 수 도 있습니다. 간단한 이 문서로 확인해 보시기 바랍니다.

DB를 모르셔도. 가능하시다면. DB를 만들어서 사용하시는것도 좋습니다. 그냥. 파일 저장하고. 읽고 쓰면 되니까요. ㅇ_ㅇ;;

 

------------------------------------------------------------------

개발도구 다운로드 설치

Microsoft Visual C++ 2005 Express

Microsoft Visual C++ 2005 재배포 가능 패키지(x86)

Microsoft Visual C++ 2005 SP1 재배포 가능 패키지(x86)

 

MSSQL 다운로드 링크

MSSQL 서버를 관리하기 위한 클라이언트 툴

Microsoft SQL Server Management Studio Express

 

x86 은 32bit 컴퓨터

x64 는 64bit 컴퓨터

 

검색 링크

서비스팩. 보안업데이트. JDBC 드라이버. 등에 부가적으로 필요한 파일이 많습니다. 별도로 찾아서 설치해 보시는게 좋습니다.

 

------------------------------------------------------------------

SQL Server Management Studio Express 이거 실행하면. 프로그램 뜸.

 

로그인은 나도 모름. 알아서 설정.

윈도우즈와 sa가 있는데. 아무거나 해도 되기는 함.

 

자세한것은 SQL 책을 봐야 함.

 

------------------------------------------------------------------

 

1. 작업 표시줄 메뉴'에서 프로그램을 실행합니다.

 

2. 실행 된 화면.

 

 

3. 데이터 베이스를 생성합니다.

 

4. test 라는 DB(데이터 베이스)를 생성(만들기)합니다.

 

5. DB를 선택한 상태에서. 테이블을 생성합니다.

 

6. 열 이름과 데이터 형식을 지정합니다.

자세한건 책'을 보는게 좋습니다.

 

7. 툴바'에 있는 변경 스크립트 저장'버튼을 누르면. 생성하는 SQL 스크립트 코드를 볼 수 있습니다. 안눌러도 됩니다.

 
------------------------------------------------------------------
처음 생성시 쿼리 코드
/* 데이터 손실의 위험을 방지하려면 데이터베이스 디자이너의 컨텍스트 외부에서 실행하기 전에 이 스크립트를 자세히 검토해야 합니다.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER on
SET ARITHABORT on
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL on
SET ANSI_NULLS on
SET ANSI_PADDING on
SET ANSI_WARNINGS on
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Table_2
(
한글 nchar(10) NULL,
숫자 int NULL
)  ON [PRIMARY]
GO
COMMIT
 
------------------------------------------------------------------
쿼리 변경후 코드
/* 데이터 손실의 위험을 방지하려면 데이터베이스 디자이너의 컨텍스트 외부에서 실행하기 전에 이 스크립트를 자세히 검토해야 합니다.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER on
SET ARITHABORT on
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL on
SET ANSI_NULLS on
SET ANSI_PADDING on
SET ANSI_WARNINGS on
COMMIT
BEGIN TRANSACTION
GO
EXECUTE sp_rename N'dbo.Table_2.숫자', N'Tmp_숫자ㄴ_1', 'COLUMN' 
GO
EXECUTE sp_rename N'dbo.Table_2.Tmp_숫자ㄴ_1', N'숫자ㄴ', 'COLUMN' 
GO
COMMIT
 

 

8. 툴바에서 디스켓 모양에 저장 버튼을 누르면. 저장할 테이블 이름을 지정(입력)할 수 있습니다.

 

9. 생성된 테이블을 선택하고. SELECT. INSERT. UPDATE. DELETE등에 쿼리를 자동으로 입력할 수 있습니다.



------------------------------------------------------------------
쿼리 생성 기본형은 이렇습니다.
 
//CREATE 기본형
USE [test]
GO
/****** 개체:  Table [dbo].[Table_1]    스크립트 날짜: 08/27/2013 16:56:51 ******/
SET ANSI_NULLS on
GO
SET QUOTED_IDENTIFIER on
GO
CREATE TABLE [dbo].[Table_1](
[한글] [nchar](10) COLLATE Korean_Wansung_CI_AS NULL,
[숫자] [int] NULL
) on [PRIMARY]
 
//SELECT 기본형
SELECT [한글]
      ,[숫자]
  FROM [test].[dbo].[Table_1]
 
//DROP 기본형
USE [test]
GO
/****** 개체:  Table [dbo].[Table_1]    스크립트 날짜: 08/27/2013 16:57:39 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Table_1]') AND type in (N'U'))
DROP TABLE [dbo].[Table_1]

//INSERT 기본형
INSERT INTO [test].[dbo].[Table_1]
           ([한글]
           ,[숫자])
     VALUES
           (<한글, nchar(10),>
           ,<숫자, int,>)

//UPDATE 기본형
UPDATE [test].[dbo].[Table_1]
   SET [한글] = <한글, nchar(10),>
      ,[숫자] = <숫자, int,>
 WHERE <검색 조건,,>
 
//DELETE 기본형
DELETE FROM [test].[dbo].[Table_1]
      WHERE <검색 조건,,>
 
------------------------------------------------------------------
테스트 결과는 이렇습니다.
 

//입력

INSERT INTO shint

                      (shint, name)

VALUES     (,)

 

//확인 (출력)

SELECT [shint]

      ,[name]

  FROM [test].[dbo].[shint]

 

//수정 (변경)

UPDATE [test].[dbo].[shint]

   SET [shint] = 'aaaa'

      ,[name] = 33

 WHERE shint = '신우섭'

 

//삭제

DELETE FROM [test].[dbo].[shint]

      WHERE [shint] = 'aaaa'

 

10. 테이블 열기를 선택하면. INSERT. UPDATE. DELETE를 매우 쉽게 할 수 있습니다.

 

11. 새 쿼리 편집기 창에서 SELECT 문을 실행한 결과가 아래 보여지게 됩니다.

 

12. 쿼리 만드는 방법이 어려우면.

툴바 버튼중에서 빨간색으로 표시된 버튼이 편집기에서 쿼리 디자인' 하기를 실행합니다.

 

 

 

//테이블을 생성하면. 아래와 같은 쿼리가 자동으로 생성 됩니다.

SELECT [한글]

      ,[숫자]

  FROM [test].[dbo].[Table_1]

SELECT     한글, 숫자

FROM         Table_1

ORDER BY 숫자

 

13. 쿼리 영역을 갈무리(선택)하고. 실행을 하면 해당 쿼리만 실행이 되고.

쿼리 영역을 갈무리(선택)하고. 편집기에서 쿼리 디자인을 실행하면. 해당 영역만 실행됩니다.

 

14. 여러개의 테이블을 추가할 수 있습니다.

같은 테이블까지도 추가가 됩니다.

 

 

 

SELECT [한글]

      ,[숫자]

  FROM [test].[dbo].[Table_1]

SELECT     한글, 숫자

FROM         Table_1

ORDER BY 숫자SELECT     Table_1.한글, Table_1_1.숫자, Table_1_2.한글 AS Expr1

FROM         Table_1 CROSS JOIN

                      Table_1 AS Table_1_1 CROSS JOIN

                      Table_1 AS Table_1_2

 

 

 

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------

처음 만든 문서는 윈도우 인증인데. sa 인증으로 OLEDB를 사용하는 방법을 적어 보도록 한다.

 

노트북에서. 기존 프로그램 제거와 새로 다운받아서. 설치하는데. 이것저것 하다보니. 약 3시간 정도가 걸렸다. SQL 상당히 무겁다.

 

별 다를건 없고. 접속이 안되는거다. 이런 젠장. ㅡ_ㅡ;;

 

SQL Server 2005 Express Edition SP1'를 이곳에서 다운 받는다. 페이지가 없다고 나오지만. 계속 접속하면 보인다.

http://www.microsoft.com/korea/msdn/vstudio/express/sql/download/

 

SQLEXPR32_KOR.EXE 이 파일을 다운 받는다. 이게 서버. (설치할때 윈도우 인증이 아니라. sa 암호 사용후 암호를 잘 기억해두도록 하자)

SQLServer2005_SSMSEE.msi 이 파일이 매니저. 글 맨 위에 적어 놨다.

 

SQL Server Management Studio Express를 실행해서 접속하고.

새 데이터 베이스를 만들자. 맨 위에 적어놨다.

 

SQL 매니저로 서버 이름을 구할 수 있는데. VC에서는 이 부분에 주의 해야 한다.

SHINT-NOTEBOOK\\SQLEXPRESS 이렇게 입력해야 접속이 된다.

 

그러니까. 이 모든 노력은. 아래 함수를 쓰기 위해서 하는거 뿐 이다.

// hr = m_datasource.OpenFromInitializationString(OLESTR("PROVIDER=SQLOLEDB;SERVER=127.0.0.1;UID=sa;PWD=1;DATABASE=VIDEOSHOP")); 

 hr = m_datasource.OpenFromInitializationString(OLESTR("PROVIDER=SQLOLEDB;SERVER=SHINT-NOTEBOOK\\SQLEXPRESS;UID=sa;PWD=1;DATABASE=VIDEOSHOP")); 

    

PROVIDER=SQLILEDB;      //DB 접속 방식 선택

SERVER=서버 주소;          //서버 도메인 주소. 또는 아이피

UID=sa;                          //사용자 아이디

PWD=1;                          //암호

 

 

 

 

DB를 만들었으니. ODBC에 등록해보도록 해보자. ㅇ_ㅇ;; 나도 잘하는건 아니지만. 나처럼 개고생하지 말라는 의미에서 만드는거 뿐 이다.

 

아마. 처음에는 VIDEOSHOP 이라는 DB가 없을거다.

그냥 추가' 누르자.

 

SQL Server를 고른다.

Native 는 뭔지도 모르겠다. ㅇ_ㅇ;;

 

접속하려는 DB 이름이 VIDEOSHOP 이다

서버는 오른쪽에 세모 모양 누르면. 보여지는데... 오래 걸린다. 이런 개떡같은 느림보 SQL... ㅡ_ㅡ;;

 

우리는 윈도우 인증이 아니라. sa 사용자 인증을 하려는거다.

sa와 암호를 입력해보자. 압호 입력은 SQL 서버를 설치할때. 뜬다... ㅡ_ㅡ;; 맨 처음에 해야 하는건데... 캡쳐를 안했다. 대충 넘겨...

아까 입력한 암호를 잘 기억해두어야 하는거다...

 

그냥. 다음...

 

마침.

 

접속 테스트.

 

 

성공했으면 완료.

 

예제 소스는 이걸로 해봤는데. 이거 말고도 되는건 많으니까 .아무거나 DB예제 구해서. 해보도록 해보자.

닷넷 바이블 Visual Studio .NET 설치 프로그램 - 삼양 미디어\Sample\Chapter34_OLEDB\OLEDB

 

 

현재 이 글에는

- SQL 서버 다운로드. 설치

- 사용자 인증

- ODBC 접속 생성

- DB 생성 및 테이블 생성. 데이터 입력.

- VC 접속에 필요한 ODBC 접속 방식 등을 기록했다.

 

설치 및 접속은. 이 정도면. 가능하다.고 생각된다.

 

프로그램에 대한 부분은 VC 책을 참고해 보도록 하자.

 

 

-------------------------------------------------------------------------------------------------------------------------

실행해보니. 삼양 책'이 좀 어려움이 있었다

쿼리가 어려운 분들을 위해서. DB 테이블 설정과 각종 쿼리 방식에 대해 적어본다.

정확하거나. 확실하게 맞는 내용은 아니다. 쿼리는 전문가에게 문의하기 바란다.

 

 

-- http://blog.naver.com/makand123?Redirect=Log&logNo=30176492099

 

--------------------------------------------------------------------------------------------

use VIDEOSHOP

CREATE TABLE v_customer

(

cust_idintIDENTITY(1,1)NOT NULL,

cust_namevarchar(10)NOT NULL,

cust_telvarchar(15)NOT NULL,

)

 

use VIDEOSHOP

CREATE TABLE v_rentrecord

(

rent_idintIDENTITY(1,1)NOT NULL,

cust_idintNOT NULL,

video_idintNOT NULL,

rent_datedatetimeNOT NULL,

return_datedatetimeNULL,

rent_statusvarchar(10)NULL,

)

 

use VIDEOSHOP

CREATE TABLE v_videolist

(

video_idintIDENTITY(1,1)NOT NULL,

video_titlevarchar(50)NOT NULL,

video_gradevarchar(10)NULL,

video_opendatevarchar(10)NULL,

video_statuschar(6)NULL,

cust_idintNULL,--NULL 이어야 한다.

)

 

 

 

--------------------------------------------------------------------------------------------

DROP PROCEDURE sp_delete_Video 

go

 

CREATE PROCEDURE sp_delete_Video 

       (@video_id int)

AS

  declare @ERR_NUM int

 

 

  BEGIN TRAN

 

  begin

 

  delete v_rentrecord where video_id = @video_id;

  delete v_videolist  where video_id = @video_id;

  

  end

 

  select @ERR_NUM = @@ERROR

 

  if(@ERR_NUM <> 0) 

  begin

     rollback tran

  end

  else

  begin

     commit tran

  end

 

 

--------------------------------------------------------------------------------------------

DROP PROCEDURE sp_Insert_Customer 

go

 

CREATE PROCEDURE sp_Insert_Customer 

           (@V_NAME  varchar(10),

            @V_TEL   varchar(15))

AS

  declare @ERR_NUM int

 

  BEGIN TRAN

 

  begin

 

  INSERT INTO V_CUSTOMER  

  VALUES      (@V_NAME,

               @V_TEL);

 

  end

 

  select @ERR_NUM = @@ERROR

 

  if(@ERR_NUM <> 0) 

  begin

     rollback tran

  end

  else

  begin

     commit tran

  end

 

 

 

--------------------------------------------------------------------------------------------

-- http://blog.naver.com/2zerox?Redirect=Log&logNo=90114956283

-- http://cafe.naver.com/jjdev/740

 

DROP PROCEDURE sp_Insert_rentrecord

go

 

CREATE PROCEDURE sp_Insert_rentrecord

         (@V_CUSTID int,

          @V_VIDEOID int)

AS

 

   DECLARE @ERROR_SAVE int

 

   BEGIN TRAN

 

   begin

 

   INSERT INTO V_RENTRECORD

   VALUES (@V_CUSTID,

           @V_VIDEOID,

           GETDATE(),

           NULL,

           '미납');

 

   UPDATE V_VIDEOLIST

   SET    VIDEO_STATUS  = '대여중',

          CUST_ID       = @V_CUSTID

   WHERE  VIDEO_ID      = @V_VIDEOID;   

 

   end

 

   select @ERROR_SAVE = @@ERROR

 

   if(@ERROR_SAVE <> 0) 

   begin

      rollback tran

   end

   else

   begin

      commit tran

   end

 

 

 

 

--------------------------------------------------------------------------------------------

 

DROP PROCEDURE sp_update_returnvideo

go

 

CREATE PROCEDURE sp_update_returnvideo

           (@v_rentid    int)      

AS

   DECLARE @V_VIDEOID int

   DECLARE @ERROR_SAVE int

 

   BEGIN TRAN

 

   begin

 

   UPDATE  V_RENTRECORD

   SET     RETURN_DATE  = GetDate(),

           RENT_STATUS  = '반납'

   WHERE   RENT_ID      = @V_RENTID;  

 

   SELECT  @V_VIDEOID = (SELECT VIDEO_ID  FROM   V_RENTRECORD   WHERE  RENT_ID  =  @V_RENTID);

 

   UPDATE V_VIDEOLIST

   SET    VIDEO_STATUS = '대기중',

          CUST_ID = NULL

   WHERE  VIDEO_ID = @V_VIDEOID;

   

   end

 

   select @ERROR_SAVE = @@ERROR

 

   if(@ERROR_SAVE <> 0) 

   begin

      rollback tran

   end

   else

   begin

      commit tran

   end

 

 

 

 

--------------------------------------------------------------------------------------------

 

 

-- MSSQL 주석은 -- 다

-- MSSQL 테이블 삭제

-- 외래키 관계 삭제 방법

 

 

use VIDEOSHOP

 

ALTER TABLE v_rentrecord

DROP CONSTRAINT FK_v_rentrecord_v_customer

 

ALTER TABLE v_rentrecord

DROP CONSTRAINT FK_v_rentrecord_v_videolist

 

ALTER TABLE v_videolist

DROP CONSTRAINT FK_v_videolist_v_customer

 

DROP TABLE v_videolist

DROP TABLE v_rentrecord

DROP TABLE v_customer

 

 

 

 

 

MSSQL 자동증가 컬럼 테이블 복사

http://hotdogya.tistory.com/121

http://develop.sunshiny.co.kr/146?category=0

http://cafe.naver.com/itinsuccess/5

http://cafe.naver.com/oznet/98

 

 

MSSQL 테이블 생성, 제약조건 생성 및 삭제 ALTER TABLE 명령어 사용하기

http://blog.naver.com/ssuyastory?Redirect=Log&logNo=100167616282

 

http://blog.danggun.net/1854

http://dcslab.snu.ac.kr/~hhyuck/mysql_5/sql-syntax.html

 

CDynamicAccessor::BindColumns

Number of columns: 6

Blob Handling Mode: DBBLOBHANDLING_DEFAULT

0. Column ordinal 1: Binding as native data type

1. Column ordinal 2: Binding as native data type

2. Column ordinal 3: Binding as native data type

3. Column ordinal 4: Binding as native data type

4. Column ordinal 5: Binding as native data type

5. Column ordinal 6: Binding as native data type

0x80040E2F: 값이 열 또는 테이블의 무결성 제약 조건을 위반합니다.

 

 

 

 

 

 

 

 

--------------------------------------------------------------------------------------------

마지막으로 디비 오류 메시지 보는 함수까지 적어본다.
그냥 링크만 달려고 했는데...
멀티 바이트에서 OutputDebugString()으로 출력하면. 버그가 좀 있길래 약간 수정해봤다.

 

삼양 미디어에 나온. 사용방법은 이렇다.

 

    str_Query.Format("INSERT INTO v_videolist(video_title,video_grade,video_opendate,video_status) VALUES('%s','%s','%s','대기중')" ,

  m_strEditTitle, m_strGrade, m_strOpenDate); 

 

    HRESULT hr = InsertVideo.Open(m_MainDlg->m_session,str_Query);

if(FAILED(hr))

{

//buffer = 0x00192dd8 "값이 열 또는 테이블의 무결성 제약 조건을 위반합니다.

PrintOleDbError(hr);//DB_E_INTEGRITYVIOLATION);

   AfxMessageBox("비디오 추가 에러");   

}

 

 

 

------------------------------------------------------------------------------------------------------------------------

 

//http://msdn.microsoft.com/en-us/library/ms686203(VS.85).aspx

//http://social.msdn.microsoft.com/Forums/sqlserver/en-US/9844b25e-8f89-4101-ad16-6622c39b5a06/how-hreseult-hex-value-can-be-converted-into-a-error-message

#include <windows.h>

#include <oledberr.h>

 

#include <stdio.h>

 

BOOL g_loaded = FALSE;

 

 

HMODULE GetOleDbResourceModule() {

    const wchar_t *oledb32r = L"oledb32r.dll";

    HMODULE result = GetModuleHandleW(oledb32r);

    if (result == NULL) {

        wchar_t *dll_path = (wchar_t *)malloc((MAX_PATH + 1) * sizeof(wchar_t));

        ExpandEnvironmentStringsW(L"%CommonProgramFiles%\\System\\Ole DB",

                                  dll_path,

                                  MAX_PATH);

        SetDllDirectoryW(dll_path);

        result = LoadLibraryW(oledb32r);

        g_loaded = TRUE;

        free(dll_path);

    }

    return result;

}

 

void PrintOleDbError(HRESULT hr_to_format) {

    HMODULE oledb32r = GetOleDbResourceModule();

    wchar_t *buffer = NULL;

    FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |

                   FORMAT_MESSAGE_FROM_HMODULE    |

                   FORMAT_MESSAGE_IGNORE_INSERTS,

                   oledb32r,

                   hr_to_format,

                   LANG_USER_DEFAULT, (LPWSTR)&buffer, 0, NULL);

//    printf("0x%08X: %S", hr_to_format, buffer);

 

//wchar_t buf[1024];

//memset(buf, 0x00, 1024);

//    wsprintf( (LPSTR)buf, "0x%08X: %S\n", hr_to_format, buffer);

CString str, tmp;

//tmp.Format("0x%08X: %S\n", hr_to_format, buffer);이거 죽음

//tmp.Format("0x%08X:", hr_to_format);이거 죽음

 

wchar_t buf[1024];

//sprintf(buf, "0x%08X: %S\n", hr_to_format, buffer);값이 잘린다

//sprintf((char*)buf, "0x%08X: ", hr_to_format);

 

wsprintf((char*)buf, "0x%08X: %S", hr_to_format, buffer);

str.Format("%s", buf);

 

//0x80040E2F: 값이 열 또는 테이블의 무결성 제약 조건을 위반합니다.

OutputDebugString(str);

 

if (buffer)

        LocalFree(buffer);

    if (g_loaded)

        FreeLibrary(oledb32r);

}

 

int wmain() {

    PrintOleDbError(DB_E_INTEGRITYVIOLATION);

}

 

 

 

----------------------------------------------------------------------------------------------

마무리 지으며. (생각해보니... 삼양 미디어 책을 구입한 시기에. 미디어 법이 발효 되었네... ㅡ_ㅡ;;)

 

결과적으로는 이 책은. DB에 관한 설명이 이해하기 어려워서. 따라하기가 어렵다.

사실. 제대로 좋은 매뉴얼로 만들어진 책을 보기는 드물다... 차라리 예전에 나온 책을 보는것이 현명하다.

 

그건 그렇고... 내가 쓴 문서도 복잡하기는 마찬가지다.

좀 더 잘만들면 되겠지만... 출판사도 먹고 살아야 하니. 여기서 마무리 한다.

 

문제에 대한 대부분의 해결 방법을 찾아서 정리해놨으니. 노력하면. 할 수 있다.

문제는... 아무리봐도... 좀 복잡하다... ㅡ_ㅡ;; 내가 사용하는 방식은 간단한데... 흠... 그냥 되는대로 쓰는거지 뭐...

 

 

----------------------------------------------------------------------------------------------

 

이것은 ATL OLE DB를 접근하는 방식입니다.

자동화 생성하긴 하는데... 잘 안됩니다. 그래서. 실행 되는 예제를 파일로 첨부합니다.

 

http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=922233&ref=922233

 

첨부 파일 예제 소스

 

 OLEDB03.zip

 

 

 

 

 

 

 

 

 

 

 

기능이 구현 되도록. 만들기는 했지만... ㅡ_ㅡ;; 어떻게 설명을 해야 할지...

 

- 방식이 다양하니. 한번 사용해 보셔도 됩니다.

- 전문가에게 조언과 지도를 받으십시요.

 

 

 

//윈도우10 - MSSQL 2005 Express 설치 오류

해결 방법
SQLServer2005_SSMSEE_x64.exe - 파일 속성 - 호환 모드

 

 

//MSSQL 2005 EXPRESS 연결 안될때.

해결 방법 - SQLEXPR_ADV_KOR.EXE 설치하면 됨. ★★★★★
Microsoft SQL Server 2005 Express Edition with Advanced Services 서비스 팩 2
https://www.microsoft.com/ko-kr/download/details.aspx?id=12980

 

 

sa 비밀번호를 잊어먹었을 때 대처방법 - 싱글모드 접속 ;-m 옵션 

http://www.sqler.com/390533

 

 

//오류
[Microsoft][ODBC SQL Server Driver][DBNETLIB]잘못된 연결입니다.

//해결
ODBC 데이터 원본(32비트) - SQL Native 로 연결 32비트
ODBC 데이터 원본(64비트) - SQL Server 로 연결 64비트

//
MS SQL Server 연결 시 "[ODBC SQL Server 드라이버][DBNETLIB] 연결이 잘못되었습니다." 오류 발생
https://kb.tableau.com/articles/issue/error-odbc-sql-server-driver-dbnetlib-invalid-connection?lang=ko-kr



MSSQL Server Express에서 ODBC 연결시 에러    
https://social.technet.microsoft.com/Forums/ko-KR/df70f642-0310-4b89-bc71-7ba5879a8cd5/mssql-server-express5064049436-odbc-506724420849884-5064047084?forum=sqlserverko



SQL Server 2000에서 연결 문제를 해결하는 방법
http://coffeeplz.tistory.com/17



ODBC 관리자는 32bit 64bit 호환 되지 않는다
http://extern.tistory.com/62



[MSSQL] 접속 장애 에러, TCP/IP 1433 포트
https://m.blog.naver.com/PostView.nhn?blogId=bigenius&logNo=20024569874&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F



원격 DB를 OLEDB로 연결시 에러가 나는데요~
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=102180&page=1487

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.