반응형

Cursor.Current = Cursors.Default;              // 일반 화살표

Cursor.Current = Cursors.WaitCursor;         // 똥글뱅이 돌아가는 동그라미 커서


예시)


작업 준비

Cursor.Current = Cursors.WaitCursor; //이 시점부터 마우스가 똥글뱅이로 변함


작업시작

작업중..


.

.


작업끝

Cursor.Current = Cursors.Default;     //이 시점부터 마우스가 일반 화살표 모양으로 변함


반응형
반응형

설명을 돕기 위한 정보


Table명 : test

Table Design :


 Column Name

Type 

Etc.. 

 Number

INT 

PK 

 test

VARCHAR 

 

 Chojing 

VARCHAR 

 


Column명 : Number, test, Chojing

PK : 프라이머리 키

==test테이블==


 Number

test 

Chojing 

 4

 aa

 good

 1

 bb 

 nice 


1. Select 쿼리문


 Select Column명 From Table명


ex1) Select Number From test

결과 : 

 Number

 4

 1


ex2) Select * From test

결과 :

 Number

test 

Chojing 

 4

 aa

 good

 1

 bb 

 nice 



2. Insert 쿼리문


 Insert into 테이블명 (컬럼명1, 컬럼명2, ... ) Values (변경값1, 변경값2, ...)


ex1) Insert into test (Number, test, Chojing) Values (5, cc, great)

결과:

 Number

test 

Chojing 

 4

aa 

good 

 1

bb 

nice 

 5

cc 

great 


*만약 Column의 속성중에서 null 허용이 되어있을 경우 생략 가능하다. 생략하여 Insert 했을 시, 자동으로 null이 삽입된다.

컬럼순서와 변경값 순서는 쌍으로 적용된다. (컬럼명1 에는 변경값1 위치가 적용된다는 이야기)


3. Update 쿼리문


Update 테이블명 Set 컬럼명1=변경값1, 컬럼명2=변경값2 where 조건


ex1) Update test Set test = xx, Chojing = bad where Number='4'

결과:

Number 

test 

Chojing 

xx

bad 

bb 

nice 

5

cc 

great 


4. delete 쿼리문


Delete 테이블명 where 조건


ex1) Delete test where Number='4'

결과:

 Number

test 

Chojing 

 1

 bb

 nice

 5

 cc

great 


*보통 Delete할때 조건은 프라이머리키로 넣는다. 프라이머리키로 안넣으면 에러났던거같은..기억이...

반응형
반응형

1. 전체 백업 T-SQL


backup database 데이터베이스명 to disk = '경로'

with init

go


경로 예시 ) 'c:\test\testBackup.bak'

반드시 백업파일은 .bak 확장자 명을 이용한다.


2. Log 백업 T-SQL


backup log '데이터베이스명' to disk = '경로'

with init

go


경로 예시 ) 'c:\test\testLogBackup.log'

반드시 로그파일은 .log 확장자 명을 이용한다.


3. 전체 백업 파일 복원 T-SQL


restore database '데이터베이스명' from disk = '경로' ,

with move '데이터베이스명' to '데이터베이스를 위치할 경로',

move '데이터베이스로그명' to '데이터베이스로그를 위치할 경로' 

,recovery , stats


경로 예시 ) 'c:\test\testBackup.bak'

백업파일을 위의 예시에 반드시 옮겨놓고 위의 T-SQL을 진행해야한다. 확인 필수!


4. 로그 백업 복원


restore log 데이터베이스명 from disk = '경로',

with recovery,stats


경로 예시 )  'c:\test\testLogBackup.log'

로그파일을 위의 예시에 반드시 옮겨 놓고 위의 T-SQL을 진행해야한다. 확인 필수!


** 3번과 4번은 테스트 해보지 않았다. 나는 로그 복원을 norecovery로만 해봤기 때문에......

나는 보통 백업 및 복원은 T-SQL로 안하고, GUI의 백업 방법을 이용하여 백업 파일을 떨군다. GUI의 백업 방법중 log 방법은 어떻게 하는지 잘 모르겠어서 T-SQL로 만드는 편이다.

파란색 제목의 작업은 GUI로 하는게 편하다. GUI로 하는걸 추천한다!

GUI포스팅은 좀만 기다려주시면 올려보도록할게요 ㅠㅠ그림포스팅귀차낭...


norecovery는 미러링 하기 전 미러서버에서 복원할 때 norecovery를 썻는데, norecovery 로그 복원은 다음과 같다.


restore log 데이터베이스명 from disk = '경로',

with norecovery, stats




반응형
반응형


window 에서 Page로 이동할 때의 방법


window 에서 버튼 더블 클릭 후 Page로 이동할 수 있게 인스턴스 생성 후 Content를 변경하는 느낌인 것 같다.


private void Button_Click_1(object sender, RoutedEventArgs e)

{

Page1 page = new Page1();

page.Title = "testPage";

this.Content = page;

}


window 에서 window로 이동할 때의 방법

window 에서 더블 클릭 후 Show()나 ShowDialog() 메서드를 이용하여 창을 이동한다.

Show : 모달리스 창. 뒤의 부모 폼으로 이동 가능하다.

ShowDialog : 모달 창. 뒤의 부모 폼으로 이동이 불가능하다. 창을 닫을 때 까지 부모창 또는 다른 창으로 이동이 불가능하다.


private void hand_click(object sender, RoutedEventArgs e)

{

Window w = new Window();

w.Title = "TestDialog";

w.Show();

}


private void HelloClick(object sender, RoutedEventArgs e)

{

Window1 w1 = new Window1();

w1.Title = "Hello Test";

w1.ShowDialog();

}


Page 넘기는 부분 출처 : https://social.msdn.microsoft.com/Forums/vstudio/ko-KR/d5a8d61c-91e6-4999-add7-5c3474922bae/how-to-open-wpf-page-in-the-wpf-window?forum=wpf


window 넘기는 부분 출처 : 에센셜 WPF 책


반응형
반응형


윈도우 7에서 SQL Server 2016을 올리려 할 때 다음과 같이 최소 요구사항을 충족하지 않았다고 이야기한다. 


SQL Server 2016은 윈도우 7을 지원하지 않는다. 윈도우 8 이상부터 지원하기 때문에 OS를 업그레이드 해야 문제가 해결된다. 



출처 : https://stackoverflow.com/questions/38432026/why-can-i-not-install-sql-server-express-2016-on-windows-7-professional-64-bit-s


이 컴퓨터의 운영 체제 또는 서비스 팩 수준이 SQL Server 2016의 최소 요구 사항을 충족하지 않습니다. 이 SQL Server 릴리스를 지원하는 최소 요구사항을 충족하는 운영체제를 확인하려면 다음에서 SQL Server 2016을 설치하는 데 필요한 하드웨어 및 소프트웨어 요구 사항을 참조하세요.

반응형

'프로그래밍 > DB' 카테고리의 다른 글

SQL) MSSQL Query / 기본 쿼리문  (0) 2018.01.12
SQL) MSSQL T-SQL 백업 및 복원  (0) 2018.01.12
MSSQL 프로시저 작성방법  (0) 2017.12.13
테이블 명이 바로 쳐지지 않을 때  (0) 2017.09.04
[SQL] SQL문  (0) 2016.01.14
반응형

MSSQL 프로시저 작성 방법


1. Select 하는법

기존에 있던 프로시저 중 하나를 가져와 보면 다음과 같다.

"OrgGet"은 프로시저 이름이다.

USE [Unstoring]

GO

/****** Object:  StoredProcedure [dbo].[OrgGet]    Script Date: 2017-12-13 오후 1:49:52 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROC [dbo].[OrgGet]

 

AS

 

BEGIN

        SELECT * From organization;

END

 

보통

USE [Unstoring]

GO

/****** Object:  StoredProcedure [dbo].[OrgGet]    Script Date: 2017-12-13 오후 1:49:52 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

까지는 자동으로 써진다. 지금 ALTER 이라고 써져있는 이유는 이미 만들어져있는 프로시저에서 수정하기 를 눌러 쿼리가 생성되어있기 때문에 ALTER라고 씌여져 있는 것이다. 처음 만들 때는 ALTER가 아닌 CREATE 로 만들어야 한다.

그렇기 때문에, 프로시저를 만들려고 하면 다음과 같이 입력하고 실행해야 맞는 이야기다.

USE [Unstoring]

GO

/****** Object:  StoredProcedure [dbo].[OrgGet]    Script Date: 2017-12-13 오후 1:49:52 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROC [dbo].[OrgGet]

 

AS

 

BEGIN

        SELECT * From organization;

END

이렇게 해야 되는데 여기서 바뀐 것은 ALTER에서 CREATE밖에 없다. 이렇게 작성한 뒤, “실행버튼을 누르거나 F5키를 누르면 프로시저가 생성된다. 한번 생성한 프로시저는 지울때까지 사라지지 않는다. 이 프로시저를 수정하는 방법은 위에서 보았듯이 ALTER를 사용하여 수정하면 된다. 이제 프로시저를 개발툴에서 가져다가 쓸 수 있게 되었다. 개발툴에서 쓰는 방법은 좀 뒤에 설명하겠다.


2. Update하는법

USE [Unstoring]

GO

/****** Object:  StoredProcedure [dbo].[ProductAdd]    Script Date: 2017-12-13 오후 2:00:33 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROC [dbo].[ProductAdd]

(

        @code                  NVARCHAR(50),

        @name                  NVARCHAR(50),

        @consumer              MONEY,

        @prevailing            MONEY,

        @agency                MONEY,

        @cooperative   MONEY

)

AS

DECLARE

        @MSG    VARCHAR(100)

BEGIN TRY

BEGIN

 

        INSERT INTO product (prdt_code,prdt_name,consumer_price,prevailing_price,agency_price,cooperative_price)

        VALUES (@code,@name,@consumer,@prevailing,@agency,@cooperative);

 

        SET @MSG = 'Product_Input_Success';

END

END TRY

BEGIN CATCH

BEGIN

        SET @MSG = 'Product_Input_Fail';

END

END CATCH

 

SELECT @MSG AS MSG;

 

ProductAdd는 프로시저 이름이다.


@변수를 하게되면 개발툴에서 넘겨주는 파라미터를 이용하여 값을 가져와 쓸 수 있다. 반드시 개발툴에서 넘겨지는 파라미터와 @변수 개수가 똑같아야 하며 타입도 똑같아야 한다. 순서는 반드시 똑같게 할 필요는 없다. 하지만 파라미터와 @변수는 파라미터 = 변수 로 같아야 한다. , @변수를 선언하게 되면 반드시 개발툴에서 파라미터를 만들어 입력을 꼭 해줘야 한다. 그러니까 예를 들면, @변수가 @test 였다고 하면, 개발툴에서의 파라미터 이름은 반드시 test로 해야 프로시저가 알아듣는다는 이야기이다.


Declare는 내가 프로시저 안에서 쓸 변수 같은 지역변수 같은 느낌으로 보면 된다. 개발툴에서는 접근할 수 없는 변수이고 또 접근할 필요가 없는 변수이면 Declare를 쓰는 게 낫다. 무작정 @변수로 만들어버리면 개발툴에서 반드시 파라미터로 값을 입력해줘야하는 번거로움이 생기기 때문이다. 나 같은 경우는 @MSG 라는 Declare 변수를 만들어서 INSERT가 정상적으로 처리가 되었는지 확인하는 용도로 썼다.


BEGIN TRY / END TRY Try/Catch 문이라고 이해하면 쉽다. BEGIN TRY 문 안에서 에러가 났으면 중지하고 BEGIN CATCH문으로 들어가게 된다. 보통 정상적으로 프로시저가 실행이 되었는지 확인하는 용도로 쓴다고 생각하면 된다.


BEGIN / END 는 그냥 단순히 BEGIN { , END} 라고 생각하면 된다고 구글신이 그랬다.

 

3. 개발툴에서 Select 하는 법

string strCon = "server = " + serverIP + "," + serverPort + "; uid =id; pwd = password!; database = dbname; Connection Timeout = 5"; //MSSQL 연결하기 위한 작업

string m_sqlCon = new SqlConnection(strCon); // 명령어 생성

SqlCommand scom = new SqlCommand("OrgGet", m_sqlCon); // "OrgGet"은 프로시저 이름이다. 프로시저 명령어 생성부분

if (m_sqlCon.State == ConnectionState.Closed) //DB가 닫혀있다면 열기

           m_sqlCon.Open();

scom.CommandType = CommandType.StoredProcedure; //프로시저 타입 지정

if (_param != null) // 파라미터가 있을 때 파라미터 값들 추가하는 부분

           scom.Parameters.AddRange(_param); // Select는 파라미터 추가가 없으니 건너뛰게됌

DataSet dataset = new DataSet();//데이터셋 생성

using (SqlDataAdapter da = new SqlDataAdapter(scom)) // 어댑터를 이용하여 데이터 받아오기

{

           da.Fill(dataset); // 데이터 채우기 dataset에 정보가 담겨져있음.

}

m_sqlCon.Close(); //디비 닫기

 

4. 개발툴에서 Update 하기

string strCon = "server = " + serverIP + "," + serverPort + "; uid = id; pwd = password; database = dbname; Connection Timeout = 5"; //MSSQL 연결하기 위한 작업

string m_sqlCon = new SqlConnection(strCon); // 명령어 생성

SqlCommand scom = new SqlCommand("ProductAdd", m_sqlCon); //프로시저 생성. 이름 주의해서 써야함. 파라미터는(이름,연결명령어)

var _param = new[]{ //파라미터 생성

           new SqlParameter {

                     ParameterName = "@code", //위의 @변수 이름 그대로 생성

                     Direction = ParameterDirection.Input,

                     Value = info.strPrdtCode //Value타입은 위의 프로시저 그대로 입력해야함.

                                                     //예를들면 int는 반드시 int타입으로 입력

           },

           new SqlParameter {

                     ParameterName = "@name",

                     Direction = ParameterDirection.Input,

                     Value = info.strPrdtName

           },

           new SqlParameter {

                     ParameterName = "@consumer",

                     Direction = ParameterDirection.Input,

                     Value = info.strConsumerPrice

           },

           new SqlParameter {

                     ParameterName = "@prevailing",

                     Direction = ParameterDirection.Input,

                     Value = info.strPrevailingPrice

           },

           new SqlParameter {

                     ParameterName = "@agency",

                     Direction = ParameterDirection.Input,

                     Value = info.strAgencyPrice

           },

           new SqlParameter {

                     ParameterName = "@cooperative",

                     Direction = ParameterDirection.Input,

                     Value = info.strCooperativePrice

           }

}; //@변수를 하나라도 빼뜨리고 파라미터로 넘겨주면 안됨. 변수 있는거 모두 값을 지정하여 넘겨줘야함

if (m_sqlCon.State == ConnectionState.Closed)

           m_sqlCon.Open();

 

scom.CommandType = CommandType.StoredProcedure;

 

if (_param != null)

           scom.Parameters.AddRange(_param);

 

DataSet dataset = new DataSet();

string str = "";

using (SqlDataAdapter da = new SqlDataAdapter(scom))

{

           da.Fill(dataset);

           str = dataset.Tables[0].Rows[0].ItemArray[0].ToString(); 

//@MSG를 보기위해 만든 것. 성공인지 실패인지 가리기 위해 가져온 부분. 테이블이 Select1개밖에 실행되지 않으니 TableRows0번째일것이다. 그리고 쭈루룩 들어오는 아이템들은 ItemArray로 들어오게 된다. MSG는 하나의 줄만 들어올 테니 ItemArray에는 0번째 아이템이 들어오겠지 그게 Success 인지 Fail인지 들어오게 되니 그걸 확인하기 위하여 위와 같은 dataset.Tables[0].Rows[0].ItemArray[0].ToString();를 사용하여 확인하는 것이다.

}

m_sqlCon.Close();

 

이거에서 응용하면 된다!

반응형

'프로그래밍 > DB' 카테고리의 다른 글

SQL) MSSQL Query / 기본 쿼리문  (0) 2018.01.12
SQL) MSSQL T-SQL 백업 및 복원  (0) 2018.01.12
윈도우 7에서 SQL Server 2016 설치 불가  (0) 2018.01.04
테이블 명이 바로 쳐지지 않을 때  (0) 2017.09.04
[SQL] SQL문  (0) 2016.01.14
반응형

USE chyDB

go 

EXEC sp_changedbowner 'cjy'

go

////////////////////////////////////////////////////////

USE 데이터베이스명

go

EXEC sp_changedbowner '사용자명'

go

///////////////////////////////////////////////////////

출처는..까먹음

반응형

'프로그래밍 > DB' 카테고리의 다른 글

SQL) MSSQL Query / 기본 쿼리문  (0) 2018.01.12
SQL) MSSQL T-SQL 백업 및 복원  (0) 2018.01.12
윈도우 7에서 SQL Server 2016 설치 불가  (0) 2018.01.04
MSSQL 프로시저 작성방법  (0) 2017.12.13
[SQL] SQL문  (0) 2016.01.14
반응형

S_OK : 때때로 Boolean TRUE 값(0X0)으로 S_FALSE와 함께 사용되며 함수가 성공하였음을 의미한다. 

NOERROR : S_OK와 동일한 의미이다. 
S_FALSE : S_OK와 반대로 Boolean FALSE 값(0X1)으로 함수가 실폐하였음을 의미한다. 
E_UNEXPRCTED : 치명적인 실패를 의미한다. 
E_NOTIMPL : 멤버 함수에 구현 코드가 포함되어 있지 않다. 
E_OUTOFMEMORY : 필요한 메모리를 할당할 수 없음 
E_INVALIDARG : 하나 혹은 그 이상의 인자가 타당하지 않음 
E_NOINTERFACE : 요청한 인터페이스를 지원하지 않음 
E_POINTER : 타당하지 않은 포인터 
E_HANDLE : 타당하지 않은 처리 
E_ABORT : 작동 중지 
E_FAIL : 특정하지 않은 실패 
E_ACCESSDENIED : 일반적 접근이 금지된 에러


출처: http://skmagic.tistory.com/entry/API-HRESULT와-LRESULT 

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

MFC CompareNoCase  (0) 2017.07.17
MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
반응형

CompareNoCase는 Compare와 같지만 대소문자를 구분하지 않는다는 차이가 있다.

CString str = _T("abc");
CString str2 = _T("abc");
str.CompareNoCase(str2);
만약 두개가 같다면 0을 리턴한다. 즉, 다음과 같이 해야한다.
if(str.CompareNoCase(str2) == 0)
{
  작업
}


출처: http://phiru.tistory.com/60 

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

MFC S_OK HRESULT형 구조  (0) 2017.07.17
MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
반응형

CMap 의 함수인 GetStartPosition, GetNextAssoc 함수 사용법


1
2
3
4
5
POSITION pos = mapGuiData->GetStartPosition();
while(pos != NULL)
{
    mapGuiData->GetNextAssoc(pos, strKey, strValue); //position, key, value
}
cs


POSITION 변수를 이용하여 GetStartPosition() 함수로 처음 포지션을 잡아 준 후,

while문같은 반복문을 이용하여 GetNextAssoc 함수를 이용하는 것이다. 

GetNextAssoc 함수는 포지션(pos)을 입력하면, key값과 value값을 준 파라미터에 담겨져 나오는 것 같다.


참고로, mapGuiData 는 포인터 변수로 내가 설정해놓았기 때문에 본 예제에서는 ->를 사용한 것이다.

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

MFC S_OK HRESULT형 구조  (0) 2017.07.17
MFC CompareNoCase  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
반응형

ListControl 한 개 이상 선택하는 방법


POSITION을 이용하여 해당 위치 정보를 가져와서, while문으로 돌리는 원리같음


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    POSITION pos = mListCtrl.GetFirstSelectedItemPosition(); 
 
    if (pos == NULL
    AfxMessageBox(_T("No items were selected!\n")); 
    else 
    { 
        while (pos) 
        { 
            int nItem = mListCtrl.GetNextSelectedItem(pos); 
            CString temp = mListCtrl.GetItemText(nItem,2); 
            temp.Format(_T("%s seq가 선택됨"),temp); 
            AfxMessageBox(temp); 
 
        }
    }
cs


mListCtrl은 리스트박스의 변수이름이다. 변수 이름을 바꾸는 방법은 다른 포스팅에 있으니 참고.

여기 를 클릭하시면 변수 이름을 변경하는 방법의 포스팅으로 이동합니다.


출처 : http://bigmark.tistory.com/15

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

MFC CompareNoCase  (0) 2017.07.17
MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC 컨트롤 변수화 하기  (0) 2017.06.22
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
[MFC]C1189 에러  (0) 2016.03.18
반응형

MFC에서 컨트롤을 변수화하여 코딩하는 방법




일단, 어떻게 코딩하는 건지 적어놓긴 했는데, 저게 이벤트로 만든 메서드인지 아니면 그냥 만든 메서드인지는 잘 모르겠다..

이벤트로 만든 메서드라면 아직 방법은 잘 모르겠다. 일단 코드라도 저장해놓는다.

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

MFC CMap GetStartPosition, GetNextAssoc  (0) 2017.07.17
MFC ListControl 한개 이상 선택하기  (0) 2017.06.23
MFC DWORD 타입 에서 ip 까보기  (0) 2017.03.09
[MFC]C1189 에러  (0) 2016.03.18
[MFC]MSB8031 오류  (0) 2016.03.18
반응형

256이 넘는 상수값을 헥사값으로 표현하기


1
2
int tmep = 1310;
byte[] intBytes = BitConverter.GetBytes(temp);
cs


결과 : intByte[0] = 30 / intByte[1] = 5


5와 30(1E)를 합치면 51E가 되어 즉, 1310이 나오게 된다.

순서 주의하여 써야함!!


그냥 쓰고싶으면 Reverse를 이용하면 됨!(아래 참고)

1
2
3
4
int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
Array.Reverse(intBytes);
byte[] result = intBytes;

cs


내 생각인데.. result는 딱히 없어도 될것 같다.. 충분히 intBytes에서 바뀌어있을거같은뎅


반응형
반응형

먼저, Serializable을 이용하여 직렬화 구조체를 만든다.


1
2
3
4
5
6
[Serializable()]
public struct COMBO_LIST
{
    public int a;
    public int b;
}
cs

나는 이런식으로 만들었다.


데이터를 저장하는 부분의 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void button1_Click(object sender, EventArgs e)
{
    List<COMBO_LIST> list = new List<COMBO_LIST>();
    COMBO_LIST combolist = new COMBO_LIST();
    combolist.a = 1;
    combolist.b = 2;
    list.Add(combolist);
    combolist.a = 3;
    combolist.b = 4;
    list.Add(combolist);
 
    FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
 
    BinaryFormatter formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, list);
    }
    catch
    {
        Console.WriteLine("실패!!!!");
        throw;
    }
    finally
    {
        fs.Close();
    }
}
cs

파일을 열어 새로운 저장공간에 저장하는 부분의 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void button2_Click(object sender, EventArgs e)
{
    List<COMBO_LIST> list = new List<COMBO_LIST>();
    COMBO_LIST combolist = new COMBO_LIST();
 
    FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        list = (List<COMBO_LIST>)formatter.Deserialize(fs);
    }
    catch
    {
        Console.WriteLine("실패!!!!!!!열기");
        throw;
    }
    finally
    {
        fs.Close();
    }
 
    int cnt = list.Count;
    for (int i = 0; i < cnt; i++)
    {
        //데이터 차례로 담기.
        Console.WriteLine("{0} and {1}", list.ElementAt(i).a, list.ElementAt(i).b);
    }
}
 
//결과 : 1 and 2
//       3 and 4
cs


참고사이트 : http://thismoments.tistory.com/58

http://honestgame.tistory.com/37

반응형
반응형

double 소수점 n째 자리까지 나타내기


본 예제는 4째자리까지 나타내는 예제


1
2
3
4
5
6
double itemp = 23040;
itemp * 0.001;
string str_temp = itemp.ToString("F4", CultureInfo.InvariantCulture);
 
//결과 : 23.0400
//CultureInfo는 Globalization을 선언해야 된다.
cs


CultureInfo 는 치다보면 아래 파란색 줄 눌러서 나오는(using 선언) Globalization을 추가하면 사용 가능하다.

반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# int to hex(byte)  (0) 2017.06.15
C# 리스트를 파일(dat)로 저장하기  (0) 2017.06.09
C# 컨트롤 - 원치않는 포커스 없애기  (0) 2017.05.29
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
반응형

텍스트박스 textbox 커서 없애기

버튼 포커스 없애기


원치 않는 포커스가 있을 경우, 컨트롤 속성에 가서



TapStop 을 false로 바꿔주면 된다.

반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# 리스트를 파일(dat)로 저장하기  (0) 2017.06.09
C# double 소수점 n째 자리까지 나타내기  (0) 2017.06.08
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
C# 바이트 파일 저장  (0) 2017.05.26
반응형

TextBox 개행이 \n 으로 되지 않는다. 이럴 경우엔 다음과 같은 방법을 사용하면 된다


1. \n 대신 \r\n 을 쓴다.

또는,

2. \n 대신 Environment.NewLine 을 쓴다.


ex)


1
tb.Text += Environment.NewLine;
cs



출처 : http://akangels-textcube.blogspot.kr/2009/12/c-textbox-%EC%A4%84%EB%B0%94%EA%BE%B8%EA%B8%B0.html

반응형
반응형

바이트 파일 읽기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Btn_byteOpen_Click(object sender, EventArgs e)
{
    byte[] byte_load = new byte[256];
    //파일오픈창 생성 및 설정
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Title = "파일 열기";
    ofd.Filter = "텍스트 문서 | *.txt| 모든 파일 (*.*) | *.*";
 
    DialogResult dr = ofd.ShowDialog();
    string str = null;
    //OK버튼 클릭시
    if (dr == DialogResult.OK)
    {
        byte_load = File.ReadAllBytes(ofd.FileName);
    }
}
cs


반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# 컨트롤 - 원치않는 포커스 없애기  (0) 2017.05.29
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 저장  (0) 2017.05.26
C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24
반응형

바이트를 파일로 저장하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void Btn_byteSave_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "텍스트 문서|*.txt";
    saveFileDialog1.Title = "저장하기";
    DialogResult dr = saveFileDialog1.ShowDialog();
 
    if (dr == DialogResult.OK)
    {
        if (saveFileDialog1.FileName != "")
{
            string dir = saveFileDialog1.FileName; //경로 + 파일명
            FileStream file = new FileStream(dir, FileMode.Create);
            file.Write(testBuf1, 0, testBuf1.Length);
            file.Close();
        }
    }
}


cs


반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static void Main(string[] args)
{
        //
        // TODO: 여기에 응용 프로그램을 시작하는 코드를 추가합니다.
        string str = "가나다"
        char[] charArray = str.ToCharArray(); 
        Console.WriteLine("Char Array"); 
//        for(int i=0;i<charArray.Length;i++) 
//                Console.WriteLine((int)charArray[i]); 
        foreachchar a in charArray )
                Console.WriteLine("{0}", (int)a);
 
Console.WriteLine(); 
 
byte[] byteArray = System.Text.ASCIIEncoding.Default.GetBytes(str); 
         
Console.WriteLine("Byte Array"); 
//        for(int i=0;i<byteArray.Length;i++) 
//                Console.WriteLine(byteArray[i]); 
        foreachchar a in byteArray )
                Console.WriteLine("{0}", (int)a);
}
cs



출처 : http://www.hoons.net/board/cshaptip/content/419


반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# 바이트 파일 읽기  (0) 2017.05.26
C# 바이트 파일 저장  (0) 2017.05.26
C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22

+ Recent posts