代码改变世界

(15 Mins)A Simple C# And SQL Test

  圣殿骑士  阅读(1564)  评论(0编辑  收藏  举报

C# Basic Test

Replace string1 with string2 in all the files in a given folder including all the subfolders

The first way:

复制代码
/********************************************************************************
 * Copyright (C) xxx. All rights reserved.
 * 
 * Author: xxx 
 * Email : xxx
 * Blog  : http://www.cnblogs.com/KnightsWarrior/
 * Create Date: 28/08/2012 18:40:24 PM
 * Description: Replace string1 with string2 in all the files in a given folder
 *              including all the subfolders
 *          
 * Revision History:
 *      Date                       Author               Description
 *     28/08/2012 19:01:24 PM      KnightsWarrior       
*********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ReplaceStingInTxtFile
{
    class Program
    {
        static void Main(string[] args)
        {
            //string rootFolder = @"C:\TempFolder";
            //string string1 = "he is";
            //string string2 = "she is";
            Console.WriteLine("Please input the root folder:");
            string rootFolder = Console.ReadLine();
            Console.WriteLine("Please input the string you want to replace:");
            string string1 = Console.ReadLine();
            Console.WriteLine("Please input the string you want to replace with:");
            string string2 = Console.ReadLine();
            Console.WriteLine("Replacing started...");
            ReplaceString(rootFolder, string1, string2);
            Console.WriteLine("Replacing finished...");
            Console.ReadLine();
        }

        /// <summary>
        /// Replace string1 with string2 in all the files in a given folder including all the subfolders
        /// </summary>
        /// <param name="rootFolder">Root folder</param>
        /// <param name="string1">The string before replacing</param>
        /// <param name="string2">The string after replaced</param>
        private static void ReplaceString(string rootFolder, string string1, string string2)
        {
            DirectoryInfo d = new DirectoryInfo(rootFolder);
            FileInfo[] fis = d.GetFiles();
            foreach (var fi in fis)
            {
                if (IsTxtFile(fi.Name))
                {
                    try
                    {
                        string contents = File.ReadAllText(fi.FullName);
                        contents = contents.Replace(string1, string2);
                        File.SetAttributes(fi.FullName, FileAttributes.Normal);
                        File.WriteAllText(fi.FullName, contents);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }

            DirectoryInfo[] ds = d.GetDirectories();
            foreach (var info in ds)
            {
                ReplaceString(info.FullName, string1, string2);
            }
        }

        /// <summary>
        /// Check whether the file is txt file using fileName
        /// </summary>
        /// <param name="fileName">File Name</param>
        /// <returns></returns>
        private static bool IsTxtFile(string fileName)
        {
            if (fileName.IndexOf(".txt")>0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

    }
}
复制代码

The second way:

复制代码
/********************************************************************************
 * Copyright (C) XXX. All rights reserved.
 * 
 * Author: XXX 
 * Email : XXX
 * Blog  : http://www.cnblogs.com/KnightsWarrior/
 * Create Date: 28/08/2012 19:01:24 PM
 * Description: Replace string1 with string2 in all the files in a given folder
 *              including all the subfolders
 *          
 * Revision History:
 *      Date                       Author               Description
 *     28/08/2012 19:09:24 PM      KnightsWarrior       
*********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ReplaceStingInTxtFile
{
    class Program
    {
        static void Main(string[] args)
        {
            //string rootfolder = @"C:\TempFolder";
            //string string1 = "You are";
            //string string2 = "He is";
            Console.WriteLine("Please input the root folder:");
            string rootFolder = Console.ReadLine();
            Console.WriteLine("Please input the string you want to replace:");
            string string1 = Console.ReadLine();
            Console.WriteLine("Please input the string you want to replace with:");
            string string2 = Console.ReadLine();
            Console.WriteLine("Replacing started...");
            ReplaceString(rootFolder, string1, string2);
            Console.WriteLine("Replacing finished...");
            Console.ReadLine();
        }

        /// <summary>
        /// Replace string1 with string2 in all the files in a given folder including all the subfolders
        /// </summary>
        /// <param name="rootFolder">Root folder</param>
        /// <param name="string1">The string before replacing</param>
        /// <param name="string2">The string after replaced</param>
        public static void ReplaceString(string rootfolderName, string string1, string string2)
        {
            //Get all the txt files
            string[] files = Directory.GetFiles(rootfolderName, "*.txt", SearchOption.AllDirectories);
            foreach (string file in files)
            {
                try
                {
                    //Read the file into string
                    string contents = File.ReadAllText(file);
                    contents = contents.Replace(string1, string2);

                    //Set attributes and write the string into the file
                    File.SetAttributes(file, FileAttributes.Normal);
                    File.WriteAllText(file, contents);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
}
复制代码

 

The test folder as below:

image

DB Basic Test

复制代码
/********************************************************************************
 * Copyright (C) XXX. All rights reserved.
 * 
 * Author: XXX 
 * Email : XXX
 * Blog  : http://www.cnblogs.com/KnightsWarrior/
 * Create Date: 28/08/2012 18:40:24 PM
 * Description: Create database and all the tables and insert simple data to these tables
 *          
 * Revision History:
 *      Date                       Author               Description
 *     28/08/2012 19:01:24 PM      KnightsWarrior       
*********************************************************************************/
--Create a database
CREATE DATABASE smu_db_test

GO

USE smu_db_test

GO

--Create all the tables
CREATE TABLE student
  (
     studentid   INT NOT NULL,
     studentname NVARCHAR (10),
     gender      CHAR(1),
     mobileno    NVARCHAR(13)
  )

GO

ALTER TABLE student
  ADD CONSTRAINT pk_studentid PRIMARY KEY (studentid)

GO

CREATE TABLE programme
  (
     programmeid   INT NOT NULL,
     programmename NVARCHAR(30)
  )

GO

ALTER TABLE programme
  ADD CONSTRAINT pk_programmeid PRIMARY KEY (programmeid)

GO

CREATE TABLE student_pro
  (
     studentid   INT NOT NULL,
     programmeid INT NOT NULL
  )

GO

ALTER TABLE student_pro
  ADD CONSTRAINT fk_studentid_student_pro FOREIGN KEY (studentid) REFERENCES
  student (studentid)

GO

ALTER TABLE student_pro
  ADD CONSTRAINT fk_programmeid_student_pro FOREIGN KEY (programmeid) REFERENCES
  programme (programmeid)

GO  

--Insert data into student table
INSERT INTO student (studentid, studentname, gender,mobileno) VALUES (1,  'Jason', 'M','12345678')
GO
INSERT INTO student (studentid, studentname, gender,mobileno) VALUES (2,  'Kitty', 'F','')
GO
INSERT INTO student (studentid, studentname, gender,mobileno) VALUES (3,  'Nance', 'M','')
GO
INSERT INTO student (studentid, studentname, gender,mobileno) VALUES (4,  'Harry', 'F','22334466')
GO

--Insert data into programme table
INSERT INTO programme (programmeid, programmename) VALUES (1,  'English')
GO
INSERT INTO programme (programmeid, programmename) VALUES (2,  'Chinese')
GO

--Insert data into student_pro table
INSERT INTO student_pro (studentid, programmeid) VALUES (1,  1)
GO
INSERT INTO student_pro (studentid, programmeid) VALUES (2,  2)
GO
INSERT INTO student_pro (studentid, programmeid) VALUES (3,  1)
GO
INSERT INTO student_pro (studentid, programmeid) VALUES (4,  2)
GO
复制代码

 

The database and all the tables after processed the above SQL

image

The Query SQL:

复制代码
SELECT A.programmeid,
       A.programmename,
      (SELECT COUNT(B.studentid)
       FROM student B
       INNER JOIN student_pro C ON B.studentid = C.studentid
       AND C.programmeid =A.programmeid) AS #ofStudents,
      (SELECT COUNT(B.studentid)
       FROM student B
       INNER JOIN student_pro C ON B.studentid = C.studentid
       AND C.programmeid =A.programmeid
       AND B.gender = 'M') AS #ofStudentsmale,
      (SELECT COUNT(B.studentid)
       FROM student B
       INNER JOIN student_pro C ON B.studentid = C.studentid
       AND C.programmeid =A.programmeid
       AND B.gender = 'F') AS #ofStudentsfemale,
      (SELECT COUNT(B.studentid)
       FROM student B
       INNER JOIN student_pro C ON B.studentid = C.studentid
       AND C.programmeid =A.programmeid
       AND B.mobileno <> '' AND B.mobileno IS NOT NULL) AS #ofStudentsmobile
FROM programme A
ORDER BY A.programmeid
复制代码

 

The Results as below:

image

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示