2024年2月6日 星期二

MS-SQL查詢指定資料表的結構

如果今天要修改一個欄位的長度,再來查查看是否有修改成功

 1.

MS Sql

修改欄位語法
ALTER TABLE MyTable ALTER Column Column_1 nvarchar(10) NOT NULL

2.

方法1

-- 查詢指定資料表的結構
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MyTable ';

方法2

-- 查詢指定資料表的結構
EXEC sp_columns 'MyTable ';

2024年2月1日 星期四

主控台程式(console)關閉事件

 原始的console是沒有這種好東西的.於是我們想要在關閉視窗之後再來抓到這個關閉事件

就要自行加工處理了,直接上程式碼,在program.cs上

 internal class Program
    {
        #region 激活關閉視窗事件
        public delegate bool ControlCtrlDelegate(int CtrlType);
        [DllImport("kernel32.dll")]
        private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerAppClose, bool Add);
        private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerAppClose);

        /// <summary>
        /// 關閉視窗時的事件
        /// </summary>
        /// <param name="CtrlType"></param>
        /// <returns></returns>
        private static bool HandlerAppClose(int CtrlType)
        {
            logger.Debug("HandlerAppClose:控制台關閉中...:" + DateTime.Now.ToString());
            return false;
        }

        #endregion
        public static log4net.ILog logger = log4net.LogManager.GetLogger("ConSoleLog");//取得一個日誌記錄
        static void Main(string[] args)
        {
            logger.Debug("SetConsoleCtrlHandler:" + DateTime.Now.ToString());
            ////註冊視窗關閉事件
            bool bRet = SetConsoleCtrlHandler(cancelHandler, true);           
            while (true)
            {
                Console.WriteLine("主程式執行!");
                Console.ReadLine();
                Thread.Sleep(1000);

            };
        }
    } 

 實際運行時.如果拿掉Console.ReadLine()Thread.Sleep(1000) 這兩行很多時候會無法跑到

關閉的事件裡



 

2024年1月30日 星期二

log4net 無法產出log文字檔

 平常在專案時常使用log4net來記錄log,但這次寫了一個console的程式卻發現無法產出log檔連

console 也沒有任何的資訊...

以下是解決方法

 1.先在 AssemblyInfo.cs的這支程式加入

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

 

 2.在app.config上加入

 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections> 

 

接下來再加入 

 <log4net>

    <!--輸出到Console-->
    <appender name="A1" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level %logger - %message%newline" />
      </layout>
    </appender>

    <!-- 輸出到檔案 -->
    <appender name="A2" type="log4net.Appender.RollingFileAppender">
      <file value="D:/log/FE_Check_II/" />
      <!-- 輸出檔名 -->
      <staticLogFileName value="false" />
      <appendToFile value="true" />
      <encoding value="utf-8" />
      <rollingStyle value="Date" />
      <datePattern value="yyyy-MM-dd.'TXT'" />
      <!-- <rollingStyle value="Composite" /> -->
      <maximumFileSize value="10MB" />
      <!-- 每個檔案最大size -->
      <maxSizeRollBackups value="-1" />
      <!-- <rollingStyle value="Date" /> -->
      <!-- <datePattern value="yyyyMMdd" /> -->
      <layout type="log4net.Layout.PatternLayout">
        <!-- <conversionPattern value="%date %level %logger (%file:%line) - %message%newline" /> -->
        <conversionPattern value="%d{DATE} [%t] %-5p %c - %m%n" />
      </layout>
    </appender>

    <root>
      <!-- 輸出訊息等級 -->
      <level value="DEBUG" />
      <appender-ref ref="A1" />
      <appender-ref ref="A2" />
    </root>
  </log4net>

3.在Program.cs

加入

public static log4net.ILog logger = log4net.LogManager.GetLogger("ProgramLog");//取得一個日誌記錄

 

 再來只要 

logger.Debug("您要顯示的訊息");

成功搞定產出log文字檔

 

 

MS-SQL查詢指定資料表的結構

如果今天要修改一個欄位的長度,再來查查看是否有修改成功  1. MS Sql 修改欄位語法 ALTER TABLE MyTable ALTER Column Column_1 nvarchar(10) NOT NULL 2. 方法1 -- 查詢指定資料表的結...