반응형

                .Parameters.Append .CreateParameter("DA_NAME", adVarChar, adParamInput, 100, DA_NAME)

                .Parameters.Append .CreateParameter("DA_LAT", adDouble, adParamInput, , DA_LAT)

                .Parameters.Append .CreateParameter("DA_LNG", adDouble, adParamInput, , DA_LNG)

 

adEmpty 0 No value
adSmallInt 2 A 2-byte signed integer.
adInteger 3 A 4-byte signed integer.
adSingle 4 A single-precision floating-point value.
adDouble 5 A double-precision floating-point value.
adCurrency 6 A currency value
adDate 7 The number of days since December 30, 1899 + the fraction of a day.
adBSTR 8 A null-terminated character string.
adIDispatch 9 A pointer to an IDispatch interface on a COM object. Note: Currently not supported by ADO.
adError 10 A 32-bit error code
adBoolean 11 A boolean value.
adVariant 12 An Automation Variant. Note: Currently not supported by ADO.
adIUnknown 13 A pointer to an IUnknown interface on a COM object. Note: Currently not supported by ADO.
adDecimal 14 An exact numeric value with a fixed precision and scale.
adTinyInt 16 A 1-byte signed integer.
adUnsignedTinyInt 17 A 1-byte unsigned integer.
adUnsignedSmallInt 18 A 2-byte unsigned integer.
adUnsignedInt 19 A 4-byte unsigned integer.
adBigInt 20 An 8-byte signed integer.
adUnsignedBigInt 21 An 8-byte unsigned integer.
adFileTime 64 The number of 100-nanosecond intervals since January 1,1601
adGUID 72 A globally unique identifier (GUID)
adBinary 128 A binary value.
adChar 129 A string value.
adWChar 130 A null-terminated Unicode character string.
adNumeric 131 An exact numeric value with a fixed precision and scale.
adUserDefined 132 A user-defined variable.
adDBDate 133 A date value (yyyymmdd).
adDBTime 134 A time value (hhmmss).
adDBTimeStamp 135 A date/time stamp (yyyymmddhhmmss plus a fraction in billionths).
adChapter 136 A 4-byte chapter value that identifies rows in a child rowset
adPropVariant 138 An Automation PROPVARIANT.
adVarNumeric 139 A numeric value (Parameter object only).
adVarChar 200 A string value (Parameter object only).
adLongVarChar 201 A long string value.
adVarWChar 202 A null-terminated Unicode character string.
adLongVarWChar 203 A long null-terminated Unicode string value.
adVarBinary 204 A binary value (Parameter object only).
adLongVarBinary 205 A long binary value.
AdArray 0x2000 A flag value combined with another data type constant. Indicates an array of that other data type.
반응형
Posted by Hippalus
,

반응형

github에 파일 관리를 위해 GUI 환경을 제공하는 여러툴들 중 괜찮은 source tree 기본 사용법이다.

설치는 알아서 하시고 상단 메뉴들 중 + Create를 누르면 아래처럼 로컬(나는 내부 네트워크 폴더가 로컬작업화면이다.) 설정 화면이 나타난다.

Create Repository On Account를 눌러 git repository를 만들수도 있겠으나 만들어는 지지만 오류가 나타난다.

따라서 그냥 로컬만 만들고 git자체는 github.com에서 만들길 권장한다.
일단 로컬환경을 구축하였다면 이번엔 리모트(github.com) 환경을 만든다.

최상단 메뉴의 Repository > Add Remote를 눌러

Repository Setting 화면을 불러온다.

name과 url을 입력해야 하는데

먼저 github.com에 접속하여 Remote Repository를 생성한다.
나는 로컬과 동일한 이름인 HelloHell로 그리고 공개여부는 Private로 하였다.
github.com은 3명까지는 무료로 Private를 이용할 수 있는것으로 알고 있다.

Create a new repository를 눌러 생성하였다면 아래처럼 생성된 화면과 함께 HTTPS 주소를 확인할 수 있다.
일단 이 주소(https://github.com/arosones/HelloHell.git)를 복사한다.

그리고 Source Tree의 URL에 붙여넣으고 끝내면 좋으련만 21년 이후로 계정 설정이 바뀌어서 토큰을 생성하여 주소에 포함시켜야만 한다.

더 자세한 토큰 생성법은 내가 이전에 작성한 포스트를 참고하길 바란다.
(https://hippalus.tistory.com/569)

토큰이 만들어졌다면 이제 이 토큰을 URL에 붙여넣는다.
방식은 https://토큰@github.com/당신의계정과 레파지토리 주소 이다. 

모르겠다면 내 포스팅을 참고하라
(https://hippalus.tistory.com/569)

문제 없이 진행했다면 좌측 REMOTES아래에 HelloHell이 나타남이 확인될 것이다.

 

여기까지가 가장 기본인 로컬과 리모트 저장소 생성방법이었다.
이제부턴 파일을 실제로 리모트 환경인 git으로 올려보겠다.
화면을 Source Tree(좌), 로컬저장소(우상단), github.com(우하단) 이렇게 3개를 한번에 캡쳐 떠 보았다.
로컬저장소에 파일을 아무거나 만들고 Source Tree에서 가만히 기다리거나 F5를 누르면 추가한 파일이 나타난다.

Unstaged files 윈도우 영역에서 우측의 + 버튼을 누르면 Staged files 윈도우 영역으로 파일이 올라가고 좌상단의 Commit 을 눌러 Commit을 시도하면 하단의 Commit 윈도우에 적당한 문장을 작성할 수 있다.
난 First Commit이라 작성했다.
Commit버튼을 눌러 Commit을 실행한다.

그럼 이렇게 History에 First Commit 문구와 함께 로컬 저장소의 master로 파일이 저장된것을 확인할 수 있다.

그럼 이제 리모트 환경인 github.com으로 동기화 작업을 진행해 보겠다.
상단 메뉴의 Push를 누르면 창이 하나 뜨는데 체크박스가 있다.
이걸 체크해주자.

그러면 git에 master가 보여지고 Push를 누르면 git으로 전송되어 동기화가 일어난다.

동기화가 이루어진 결과다.
우측 하단에 보면 FirstHell.txt의 모습을 확인할 수 있다.

하는김에 하나 더 해보자.
이번엔 SecondHell.txt를 만들어 아까처럼 Unstaged files의 파일리스트 +버튼을 눌러 staged files윈도우로 보내고 또 Commit를 하면

아까와 조금 다르게 Push에 숫자1 뱃지가 표시됨을 확인할 수 있다.

 

 

여기까지가 기본적인 로컬과 리모트 환경의 동기화였다.

그럼 이제 조금 더 나아가보자
git활용법 중 정책이란게 있다.
master만 운영하면 나중에 개발할 때 master로 동기화를 무턱대고 해버리게 되면 버그가 발생하고 난리가 난다.
그래서 정책을 설정하는데 일반적인 dev도 있고 긴급한 오류 수정인 hotfix도 있고 각 상황에 맞게 각 회사들마다의 정책이 있을 것이다.
이것까지 논하기엔 주제가 너무 나가버리니 그냥 난 서비스인 master와 개발 환경인 dev두개로만 정책을 설정했다 치겠다.
즉 개발로 모든 작업이 끝나면 master로 덮어 쓰는 구조정도로 이해하면 되겠다.

github.com에서 아래처럼 새로운 정책으로 dev를 만든다.
dev라 입력하고 Create branch:dev from 'master'를 누르면 된다.

그리고 이번엔 Dev로만 보내기 위해 DevHell.txt란 파일을 로컬에 만든 후

Source Tree에서 Unstaged files에서 +버튼을 눌러 Staged files로 보낸 후 마찬가지로 Commit를 시킨다.

다 되었으면 이제 Push를 해야 하는데 이상하다.
remote branch 콤보박스 컨트롤에 dev가 나타나지 않는다.
master만 보인다.

이럴 땐 그냥 dev라고타이핑 하면 된다.
source tree가 잘 만든 툴이지만 버그들이 좀 보인다. -_-

dev 입력 후 push를 누른 후 github로 이동해서 보면 dev에만 DevHell.txt가 동기화 된 것이 확인된다.

master로 가보면 당연히 devhell.txt파일을 찾을 수 없다.

여기까지 source tree의 기본 사용법과 아주 조금 응용법에 대해 알아봤다.

반응형
Posted by Hippalus
,

반응형

개나 소나 말이나 닭이나 죄 git을 사용해대지만 조금 더 편리하게 사용하려면 GUI를 지원해주는 툴을 사용하는것도 방법이다.
그런데 얘네들이 너무 바꿔댄다.
프로그램들도 툭하면 deprecated deprecated deprecated ... -_-

시키는대로 다 해도 오류가 나면서 완료됨이라며 Push가 되질 않는다.

읽어보면 2021년에 패스워드 방식이 종료됐다란 이야기이다.
이런건 그냥 툴 자체에서 사전에 제대로 흐름을 자연스럽게 셋팅이 가능하도록 좀 해줘야 하는거 아닌가 ㅡㅡ

githun.com으로 이동해서 우측 상단의 내 프로필을 선택하여 토큰을 발급받는 곳까지 이동한다.
2023년 1월 현재 경로는 다음과 같다.
Personal Access Tokens (Classic) (github.com)

https://github.com/settings/tokens

이동하면 Fine-grained tokens방식과 Tokens(classic)방식이 있는데 대충 두개 차이는 베타버전인 Fine이 좀 더 수월하고 뭐 그런것 같은데 난 그냥 classic 버전을 선택했다.
선택하면 토큰이 사용될 Note와 토큰 만료일을 대충 설정하고 
가장 중요한 repo에 체크를 반드시 한 후 스크롤을 내려 녹색 generate 버튼을 눌러 토큰을 생성하자.

생성한 토큰은 Source Tree의 상단 메뉴의 우측을 보면 설정(톱니아이콘)이 있는데 여길 누르면 저장소 설정화면이 뜨고 원격 저장소 경로를 더블클릭하거나 편집을 누르면 아래와 같이 원격 저장소 정보 화면으로 이동된다.
여기에 아까 생성한 토큰을 URL에 넣어주면 되는데 방식은 이렇다.
빨강색은 불변
주황색은 앞서 생성한 토큰
파랑색은 각자 계정과 레파지토리명
https://생성한토큰@github.com/내계정/레파지토리

좀 기괴하다 만든놈이 이렇게 입력하라니 어쩔 수 없다만 내가 만들었다면 토큰입력항목과 내계정 그리고 레파지토리를 각각 따로 입력하는 UI를 제공했을것이다.

여기까지 다 했다면 이제 커밋과 Push가 모두 다 잘 되는것을 확인할 수 있을것이다.

반응형
Posted by Hippalus
,

반응형

윈도우만 쓰면 몰라도 나처럼 아이맥 환경에서 visual studio를 사용하면 망할 매직 마우스와 망할 MS Visual Studio의 환장 콜라보로 소스가 지멋대로 확대 축소 난리 댄스를 춘다.


어찌나 짜증나는지
MSSQL도 마찬가지인데..ㅡㅡ 일단 Visual Studio부터 해결 방법을 찾아냈다.

아래 링크에서 extension을 다운 받은 후 윈도우에서 더블클릭 하여 실행하면 한동안 설치 과정을 거치고 visual studio를 restart하면 
이렇게 옵션에서 환경설정을 바꿀 수 있는 모습을 발견할 수 있다.

https://marketplace.visualstudio.com/items?itemName=MadsKristensen.Tweaks2022 

 

Tweaks 2022 - Visual Studio Marketplace

Extension for Visual Studio - A collection of minor fixes and tweaks for Visual Studio to reduce the paper cuts and make you a happier developer

marketplace.visualstudio.com

보다시피 mouse wheel zoom이 기본 False 로 셋팅되어 있다.

반응형
Posted by Hippalus
,

반응형

appsettings.json에 db connection string을 적어두고 이를 가지고와 db connection을 맺어줄 때 사용되는 코드

            var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())

           .AddJsonFile("appsettings.json", optional: false);

            IConfiguration configuration = builder.Build();

            string defaultConnectionString = configuration.GetValue<string>("ConnectionStrings:DEVDB");

            using (var conn = new SqlConnection(defaultConnectionString))   

           {

                conn.Open();

                using (var cmd = new SqlCommand())

                {

                    cmd.Connection = conn;

                    cmd.CommandText = @"

                                    SELECT

                                        M.M_USERID, M.M_USERNAME, M.M_REGDATE

                                        , MD.MD_ADDRESS, MD.MD_EMAIL, ....., JOBCD.CDNAME AS JOBCDNAME

                                    FROM 

                                        S_MEMBER AS M

                                        INNER JOIN S_MEMBERDETAIL AS MD ON M.M_IDX = MD.M_IDX AND MD.MD_DEL = 0

                                        INNER JOIN S_CODE AS JOBCD ON MD.MD_JOBCD = JOBCD.CDSUB

                                        INNER JOIN S_CODE AS JOBSUBCD ON MD.MD_JOBSUBCD = JOBSUBCD.CDSUB

                                    WHERE

                                        M.M_IDX = @M_IDX

                                        AND M.M_DEL = 0

                                    ";

 

                    cmd.Parameters.AddWithValue("@M_IDX", idx);

                    var reader = cmd.ExecuteReader();

                    reader.Read();

                    var member = new AdminMember();

                    member.Idx = idx;

                    member.UserId = (string)reader["M_USERID"];

                    member.UserName = (string)reader["M_USERNAME"];

                     ......   

                    member.DetailJobSubCd = (string)reader["MD_JOBSUBCD"];

                    member.DetailContent = (string)reader["MD_CONTENT"];

                    reader.Close();

                    return member;

                }

                return null;

            }

반응형
Posted by Hippalus
,

반응형

보통 DB로직을 Model에 넣고 Controller로 성공 여부를 리턴해줄 때 1, 0같은 결과처리 상태를 넘기기도 하지만
성공/실패 여부와 함께 메세지를 함께 넘겨줄 땐 json을 이용해볼 수 있다.

오류가 났을 땐 보안상 오류를 이용자에게 보여주지 않는게 방법이겠으나 어찌 비지니스 로직에 기능오류와 성공만 존재하겠는가?
정상 처리임에도 작업을 수행할 수 없는 상황이 발생할 수 있다.
예를 들면 좌석 예매 같은 상황은 프론트 단에서 진입시점에 좌석이 있었지만 결제 과정에서 좌석이 모두 소진될 수 있는데 이때 무턱대고 실패로만 결과를 리턴한다면 이용자는 기능 오류인지 아니면 더이상 예매를 할 수 없는 상황인지 알 수 있는 방법이 사라지는 상황에 놓이게 된다.

방법은 이러하다.
먼저 모델에 처리 함수를 선언할 때 리턴형을 string형으로 선언한다.
public string functionProc()

그리고 결과값에 성공이면 nResult에 1을 대입시키고 strMsg에 성공하였습니다. 같은 값을 대입시킨다.
실패라면 nResult에 0 또는 -1 같은 값을 대입시키고 strMsg에 실패하였습니다. 같은 값을 대입시킨다.
var jsonData = new { result = nResult, msg = strMsg };
타이핑 해보면 빨강줄이 뜰텐데 ctrl+.을 눌러 아래 처럼 nuget을 통해 추가해주자.
using Newtonsoft.Json;

new로 생성하였다면 이럴 JsonConvert를 사용하여 string으로 바꿔준 후 이를 return해주면 끝이다.
string jsonString = JsonConvert.SerializeObject(jsonData);
return jsonString;

물론 db insert나 update처럼 처리 과정에서 이용자의 데이터 오류로 인한 상세 오류를 보여주고 싶다면 try, catch를 사용하여 Exception의 Message를 보내줘도 될 것이다.
이는 이용자에게 보여주기보단 개발시 편리함을 위해 주로 디버깅시 사용하게 되지 싶다.
catch (Exception e)
{
    tran.Rollback();

    var jsonData = new { result = -1, msg = e.Message };
    jsonString = JsonConvert.SerializeObject(jsonData);
    //return -1;
}

모델이 완성되었으면 Controller 차례
다른 잡다한것들도 포함시켰는데 단순하게 모델 호출시 함수의 리턴값을 result란 변수로 받아낸 후
이를 JObject를 이용해 json형태로 파싱하면 된다.
일단 파싱이 되었다면 그다음엔 그냥 모델에서 넘겨준 json의 인자키값으로 비교만 하면 그만이다.
if (ModelState.IsValid)                                                                                                                                                  
{
    var result = model.functionProc();
    var jsonData = JObject.Parse(result);

    if (Convert.ToInt32(jsonData["result"]) == 1)
    {
        return RedirectToAction("Detail", "Member", new {idx=model.Idx});
    }

    ModelState.AddModelError(string.Empty, Convert.ToString(jsonData["msg"]));
}
마찬가지로 타이핑 해보면 빨강줄이 뜰텐데 ctrl+.을 눌러 아래 처럼 추가해주자.
using Newtonsoft.Json.Linq;

물론 이렇게 처리 안해도 된다.
모델의 멤버변수에 값을 넣고 이를 이용해도 된다.
또는 json을 사용안하고 그냥 콤마로 첫번째 콤마값은 결과 그다음은 메세지 처럼 단순하게 처리해도 된다.
하지만 이럴 경우 프로젝트의 가독성이 불량해질 수 있기에 json방식을 추천하고 싶다.
생각해보라 수많은 함수의 결과값들이 존재하고 또 함수마다 수많은 콤마로 이루어진 결과값들을 보면 첫번째는 무엇이고 두번째는 무엇, 세번째, 네번째..... 만든 사람이야 알아먹겠지만 인수받은 새로운 작업자는 머리가 아파오게 된다.

참고할만한 게시글은 여기를 보면 좋다.
https://www.csharpstudy.com/Data/Json-beautifier.aspx

using System;
using System.Windows.Forms;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;  // JValue

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 테스트용 JSON string 만들기
            var p = new { Id = 1, Name = "Alex", Address = new { City = "Redmond", State = "WA", Zip = "98052" } };
            string jsonString = JsonConvert.SerializeObject(p);
            txtOriginal.Text = jsonString;
        }

        private void btnBeautifier_Click(object sender, EventArgs e)
        {
            // JSON string을 보기 좋게 만듦
            string jsonString = txtOriginal.Text;
            txtBeautified.Text = Beautify(jsonString);
        }

        // 방법2: JToken.ToString()을 이용하는 방법
        private string Beautify(string jsonString)
        {             
            string beautifiedJson = JValue.Parse(jsonString).ToString(Formatting.Indented);
            return beautifiedJson;
        }
        
        // 방법1: SerializeObject() Formatting을 이용하는 방법
        private string Beautify_AnotherWay(string jsonString)
        {
            dynamic json = JsonConvert.DeserializeObject(jsonString);
            return JsonConvert.SerializeObject(json, Formatting.Indented);
        }
    }
}

 

JSON Beautifier - C# 프로그래밍 배우기 (Learn C# Programming)

JSON String Beautifier JSON String을 화면에 표시할 때, 라인 및 들여쓰기를 제대로 하지 않으면 읽기 어려운 경우가 있다. 예를 들어, 웹서비스 등의 외부 소스로부터 JSON String을 전달 받은 경우, 일반적

www.csharpstudy.com

 

반응형
Posted by Hippalus
,

반응형

중국 앱들 때문에 애플에서 특단의 조치를 취한지 어언 석달이 지났나?
클립보드에 내용이 있는 상태에서 금융앱들을 실행하면 붙여넣기를 허용하겠느냐라는 짜증나는 안내창이 반겨준다.
이번 패치에 해결됐나 싶었는데 여전히 해당 증상이 나타나길래 애플넘들 정신 못차리고 있구나 싶었는데 설정에서 해결할 수 있는 방법이 있었다.

먼저 환경설정 톱니바퀴 아이콘을 터치해서 설정으로 들어간 후
짜증나는 붙여넣기 허용 안내가 뜨는 앱들을 일일이 들어가서
(뭔 카카오 시리즈가 이리 많냐 ㅡㅡ)

참고로 나는 설정 > 토스를 선택했다.
토스 설정으로 들어가면 다른 앱에서 붙여넣기가 기본 묻기 상태로 되어 있다.

이를 선택하면 묻기, 거부, 허용이 있는데 허용을 선택해준다.

이제 앱에서 다시는 허용하겠느냐라는 안내창을 볼 일이 없다.
중국은 참 여러모로 대단하다.
우한 폐렴 (코로나 19)도 그렇고 앱에서 개인정보 탈취하는 것도 그렇고
보이스피싱에 
도대체 인류에 도움이 되는 일이 있기나 하는 것인지

반응형
Posted by Hippalus
,

반응형

보통 DB Connection string은 appsettings.Development.json에 보관하여 이용한다.
 
"ConnectionStrings": {
    "DefaultConnection": "Data Source=myserverip;Initial Catalog=mydb;User ID=myid;Password=mypwd;"
  }

dbContext 방식으로 된 예제들은 많지만 ADO.NET으로 가져오려면 막막해진다.
물론 MS 문서에 버젓이 있지만 늘 그렇듯 생경한 느낌을 지울 수 없고 매번 바꿔대어 찾기가 힘들다.
https://learn.microsoft.com/ko-kr/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0

방식은 이러하다.
기본 프로젝트를 기준으로 
private readonly IConfiguration _config; 를 선언해주고
IConfiguration config를 넘겨준 후 
_config.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value 로 불러와서 사용하면 그만이다.


namespace Sample.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IConfiguration _config;

        public HomeController(ILogger<HomeController> logger, IConfiguration config)
        {
            _logger = logger;
            _config = config;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult TicketList()
        {
            var dt = new DataTable();

            string strConnection = _config.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value;

            using (var conn = new SqlConnection(strConnection))
            {
                conn.Open();

                using (var cmd = new SqlCommand())
                {
                    int nIDX = 100;

                    cmd.Connection = conn;
                    cmd.CommandText = @"
                                        SELECT
                                            *
                                        FROM
                                            IN_TABLENAME
                                        WHERE
                                            IDX > @idx
                                        ORDER BY
                                            IDX DESC
                                        ";

                    cmd.Parameters.AddWithValue("@idx", nIDX);

                    var reader = cmd.ExecuteReader();

                    dt.Load(reader);
                }
            }

            ViewData["dt"] = dt;

            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

반응형
Posted by Hippalus
,

반응형

DB First방식으로 프로젝트를 진행해보고자 이리저리 알아보고 시도한 결과를 남기고자 한다.

먼저 셋팅을 하려면 nuget package manage에서 필요한 패키지를 설치하여야 한다.
예전 오래된 Visual Studio와 달리 2022에선 종속성에서 마우스 우측을 눌러 NuGet 패키지 관리메뉴를 호출해야 한다.

1. Microsoft.EntityFrameworkCore.Tools를 찾아 설치


2. DB엔진에 따라 추가로 설치해야 할 provider 다른데 아래처럼 각각 사용하고 있는 DB엔진에 맞는 provider를 추가로 설치

MSSQL : Microsoft.EntityFrameworkCore.SqlServer
MySQL : MySql.Data.EntityFrameworkCore
Oracle : Oracle.EntityFrameworkCore
SQLite : Microsoft.EntityFrameworkCore.Sqlite

이처럼 패키지를 설치하고 appsettings.json파일로 가서 DB Connection정보를 입력해 둔다.

  "CoreCodeFirst": {    "DBType":
    "mssql",
    "ConnectionString": "Server=dbip;DataBase=dbname;UId=myid;pwd=mypwd"
},

저장해주고
이제 DB First의 거진 마지막 단계인 모델(Model)과 컨텍스트 생성하기 단계.
패키지관리자콘솔 이란걸 실행해야 하는데 어디있는지 모르겠다 -_-
검색해보니 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 불러올 수 있었다.

불러온 패키지 관리자 콘솔에서 아래처럼 입력 후 엔터를 치면 
Scaffold-DbContext 'Data Source=dbip;Initial Catalog=dbname;UId=myid;pwd=mypwd' Microsoft.EntityFrameworkCore.SqlServer

Build started...

Build succeeded.

가 나오더니
이런 에러가 튀어나온다.

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 신뢰되지 않은 기관에서 인증서 체인을 발급했습니다.)

아래처럼 명령어를 수정하여 실행하면
Scaffold-DbContext 'Data Source=dbip;Initial Catalog=dbname;TrustServerCertificate=True;UId=myid;pwd=mypwd' Microsoft.EntityFrameworkCore.SqlServer

Build started...

Build succeeded.

이후 오류 없이 실행되며 프로젝트에 컨텍스트가 생성됨을 발견할 수 있다.

반응형
Posted by Hippalus
,

반응형

java di를 위한 spring 플러그인 설치를 하기위해 이클립스 메뉴의 help > eclips marketplace를 눌러 search에 spring을 입력해본다.
그리고 boot 플러그인이 아닌 Spring Tools 3 Add-On for Spring Tools 4 3.9.22.RELEASE를 설치해본다.

초기 설정대로 전체 체크된 상태로 Confirm을 누르면 설치가 되다가 오류가 발생한다.

대충 이런 오류인데
install Cannot complete the install because one or more required items could not be found.
구글에 이렇게 검색해보니 eclips market place spiring install Cannot complete the install because one or more required items could not be found.
이런 결과 페이지를 발견할 수 있었다.
https://download.eclipse.org/releases/2021-09

 

Eclipse software repository | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 360 open source projects, including runtimes, tools and frameworks.

download.eclipse.org

대략 내용은 Window의 Preferences의 Install/update로 가서 사이트를 추가하란 내용

Probably this feature is expecting you to be installing in the "Eclipse IDE for Enterprise Java and Web Developers" where this "missing" feature is already installed. In your Window -> Preferences -> Install/Update -> Available Software Sites is https://download.eclipse.org/releases/2021-09 in the list and checked (enabled)? In the worst case, use Help -> Install New Software..., choose/enter https://download.eclipse.org/releases/2021-09, look for "Eclipse XML Editors and Tools" and install that first.

시키는대로 하고 다시 처음부터 Spring 입력하고 인스톨하고 하니 설치는 되었는데.
여전히  Select wizard메뉴에서 Spring이 나오지 않았다.
뭐지 싶어서 그냥 멍때리니 이윽고 Trust란 아래 창이 뜨길래 일단 그냥 Trust ok때리니 

eclips를 재실행한다란 alert이 뜨고 재실행 해보고

wizard메뉴로가니 그제서야 Spring이 나오더란

MS나 Apple은 통합환경에서 덜그덕 거림이 업는데 Java, Android 진영은 이런게 사람을 괴롭힌다.

반응형
Posted by Hippalus
,