VS+SQLsever+wf记录

本文详细介绍了使用C#进行数据库操作的方法,包括连接数据库、执行SQL语句、使用DataTable接收结果等关键步骤,并提供了具体的代码示例。

                 怕自己遗忘知识,记录下

                 理解中的框架,主要思路:首先為連接數據庫的操作,其次是SQLServer數據庫訪問基礎類,然後是數據庫的語句邏輯,其次為整個WF調用數據庫語句,數據庫語句調用基本的數據庫邏輯。

                 数据库的链接,从网上找过,有vs里直接用tools链接库,也可以去直接用代码链接,我公司用的是框架,写好的,就一直是代码链接,就是一个链接的类改变其数据库地址就OK的,这里需要注意,有时候你的本地库是没有打开的,需要去打开,打开第二个配置文件,然后看到服务里面有这个,你打开就行了。

                 首先是數據庫的語句如何在C#里能調用,簡單的說是直接把數據庫語句,用C#某種寫法,去間接調用,期主要格式為  string sql = " SELECT * FROM TRIO_ScanRecordList with(nolock) where No='" + No + "'  ";
            DataTable dtbl = new DataTable();
            dtbl = DBHelper.InitDBHelperSQL.ExecuteDataTable(sql);這裡的     ExecuteDataTable(sql) 這個方法是SQLServer數據庫訪問基礎類里的基礎類,SQL是你可以任意改的數據庫語句,這個方法的返回數據,可以是datatable或者bool,string各種,滿足于你所需的要求。而直接写数据库语句是无法调用到数据库的,提供这种写法是因为本身就封装好了真正在干活的类,接下来是 ExecuteDataTable(sql)的来处。

             贴代码有点多,贴上重点的一个示例,这个语句存在,往后你就可以直接传string ,string是sql的语句,这是封装好的。

   /// <summary>
        /// 执行一条计算查询结果语句,返回列表第一行第一列查询结果(object)。
        /// </summary>
        /// <param name="SQLString">计算查询结果语句</param>
        /// <returns>查询结果(object)</returns>
        public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        object obj = cmd.ExecuteScalar();
                        cmd.Parameters.Clear();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        throw new Exception(e.Message);
                    }
                }
            }
        }

        /// <summary>
        /// 执行查询语句,返回列表SqlDataReader
        /// </summary>
        /// <param name="strSQL">查询语句</param>
        /// <returns>SqlDataReader</returns>
        public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand();
            try
            {
                PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                SqlDataReader myReader = cmd.ExecuteReader();
                cmd.Parameters.Clear();
                return myReader;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw new Exception(e.Message);
            }
        }

            以上这个例子是其中两个,一般来说增删改查写齐全,然后加每个的可以传递参数的方法,就可以,当然如果是游戏方面的数据库用到的方法就不是这样,理解中socket制定协议传给服务的,服务的接受拆分好做处理,也有说通过PHP连库的,但是这种方法维护起来需要会两种类型的代码  

<think> 嗯,用户这次的问题很明确,就是要知道如何在Windows Server 2019上配置防火墙规则,只允许特定IP访问特定端口。看来用户是个系统管理员,或者负责服务器运维工作,从ta特意强调"不用关闭防火墙"这点来看,应该是个注重安全性的专业人士。 之前提供的两个引用资料其实很有价值。[^1]提到虚拟机访问场景,暗示用户可能在处理内外网隔离问题;[^2]则给出了具体的3389端口配置示例,虽然端口不同但逻辑相通。需要把这些技术点整合成完整的操作流程。 考虑到Windows Server的管理界面可能和普通Windows有差异,要特别注意说明服务器版本特有的路径。比如"控制面板"在Server 2019中其实更推荐通过"服务器管理器"进入,不过为了兼容用户习惯还是保留传统路径描述。 操作步骤需要拆解得足够细:先找到防火墙配置入口,再分入站/出站说明。用户最关心的肯定是入站规则,但为了完整性还是把出站也简要提一下。重点要突出"作用域"标签页的配置,这正是实现IP过滤的关键步骤。 安全方面有几个要点必须强调:一是配置后立即测试连通性,避免规则错误导致服务中断;二是提醒用户先备份现有规则,这个很多教程都会忽略;三是区分"允许连接"和"仅允许安全连接"的适用场景。 突然想到用户可能需要配置SQL Server端口,虽然提问时没明说。从引用[^1]提到的数据库访问场景来看,应该把1433端口的示例也加进去,这样比单纯用3389演示更全面。不过示例太多可能干扰主要步骤,所以放在注意事项里比较合适。 最后生成的三个补充问题都很有实操价值:端口范围配置在企业防火墙管理中很常见;端口转发那题是考虑到用户可能有NAT需求;IP地址变更则是运维高频问题。特别是第三题,很多管理员会忘记防火墙规则不会自动跟随DNS更新。 对了,文档链接要检查是否适配Server 2019版本。微软文档经常更新,确认过这个链接在2023年仍然有效,而且包含了PowerShell命令的进阶用法,适合高级用户。 </think> 下面是在 Windows Server 2019 中通过防火墙设置**只允许特定 IP 访问特定端口**的完整步骤: --- ### **操作步骤** 1. **打开高级防火墙控制台** - 按 `Win + R` 输入 `wf.msc` 回车,或通过: *控制面板 > 系统和安全 > Windows Defender 防火墙 > 高级设置* 2. **新建入站规则** - 右侧点击 **“入站规则” > 新建规则** - 选择 **“端口”** → 下一步 - 选择协议类型(TCP/UDP)→ 输入 **目标端口号**(如 `3389`)→ 下一步 - 选择 **“允许连接”** → 下一步 3. **配置 IP 地址过滤** - 在 **“作用域”** 标签页中: - **远程 IP 地址**:选择 **“下列 IP 地址”** - 点击 **“添加”** → 输入允许访问的 **单个 IP**(如 `192.168.1.100`)或 **IP 段**(如 `192.168.1.0/24`) - *注:若需多组 IP,重复添加即可* - 下一步 4. **设置规则应用场景** - 勾选所有网络类型(域/专用/公用)→ 下一步 5. **命名规则** - 输入易识别的名称(如 `允许特定IP访问3389端口`)→ 完成 --- ### **验证与注意事项** - **立即生效**:规则保存后自动激活,无需重启。 - **测试连接**:从授权 IP 尝试访问目标端口(如 `telnet 服务器IP 3389`)。 - **优先级**:若存在冲突规则,系统按规则列表自上而下匹配。 - **安全加固**: - 建议同时配置 **出站规则** 限制敏感端口外联。 - 定期审计规则列表,清理无效条目。 > 📌 **关键点**:通过 **作用域 > 远程IP地址** 限制来源 IP 是实现精准控制的核心步骤[^1][^2]。 --- ### **进阶场景示例** **案例:仅允许 IP 段 `10.0.0.0/24` 访问 SQL Server 端口(TCP 1433)** 1. 协议:`TCP`,端口:`1433` 2. 作用域中添加远程 IP:`10.0.0.0/24` 3. 命名规则:`SQL_1433_仅允许10.0.0.x访问` --- ### **补充说明** - **命令行配置(PowerShell)**: ```powershell New-NetFirewallRule -DisplayName "允许特定IP访问端口" -Direction Inbound -Protocol TCP -LocalPort 80 -RemoteAddress 192.168.1.100 -Action Allow ``` - **日志追踪**:在防火墙属性中启用日志记录(默认路径 `%systemroot%\system32\logfiles\firewall`),便于排查异常连接。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值