小白在线

爱生活 爱小白

C#DataTable使用

在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。

添加引用

using System.Data;

创建表

HTTP GET POST 获取

public class WebHttp
{
    /// <summary>
    /// get请求带重试
    /// </summary>
    /// <param name="Url"></param>
    /// <param name="postDataStr"></param>
    /// <param name="sum"></param>
    /// <returns></returns>
    public static string HttpGet(string Url, string postDataStr, int sum)
    {
        string temp=null;
        for (int i = 0; i < sum; i++)
        {
            if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim()))
            {
                temp = HttpGet(Url, postDataStr);
            }
            else {
                break;
            }
        }
        return temp;
    }
    /// <summary>
    /// post请求带重试
    /// </summary>
    /// <param name="Url"></param>
    /// <param name="postDataStr"></param>
    /// <param name="sum"></param>
    /// <returns></returns>
    public static string HttpPost(string Url, string postDataStr, int sum)
    {
        string temp = null;
        for (int i = 0; i < sum; i++)
        {
            if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim()))
            {
                temp = HttpPost(Url, postDataStr);
            }
            else
            {
                break;
            }
        }
        return temp;
    }
    /// <summary>
    /// GET请求与获取结果
    /// </summary>
    public static string HttpGet(string Url, string postDataStr)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            request.Timeout = 10000;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            return retString;
        }
        catch (Exception ex)
        {
            return null;
        }
    }
    /// <summary>
    /// POST请求与获取结果
    /// </summary>
    public static string HttpPost(string Url, string postDataStr)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "POST";
            request.Timeout = 6000000;
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postDataStr.Length;
            StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
            writer.Write(postDataStr);
            writer.Flush();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string encoding = response.ContentEncoding;
            if (encoding == null || encoding.Length < 1)
            {
                encoding = "UTF-8"; //默认编码
            }
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
            string retString = reader.ReadToEnd();
            return retString;
        }
        catch (Exception ex)
        {
            return null;
        }
    }
}

C#【多线程篇】BackgroundWorker类使用总结

using System;
using System.ComponentModel;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private BackgroundWorker bgWorker = new BackgroundWorker();
 
        public Form1()
        {
            InitializeComponent();
            InitializeBackgroundWorker();
        }
 
        private void InitializeBackgroundWorker()
        {
            bgWorker.WorkerReportsProgress = true;
            bgWorker.WorkerSupportsCancellation = true;
            bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
            bgWorker.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgessChanged);
            bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_WorkerCompleted);
        }
 
   
        public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i <= 100; i++)
            {
                if (bgWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                else
                {
                    bgWorker.ReportProgress(i, "Working");
                    System.Threading.Thread.Sleep(10);
                }
            }
        }
 
        public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e)
        {
            string state =(string)e.UserState;//接收ReportProgress方法传递过来的userState
            this.label2.Text = "状态:" +state;
            this.progressBar1.Value = e.ProgressPercentage;
            this.label1.Text = "处理进度:" + Convert.ToString(e.ProgressPercentage) + "%";
        }
 
        public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.ToString());
                return;
            }
            if (!e.Cancelled)
                this.label1.Text = "处理完毕!";
            else
                this.label1.Text = "处理终止!";
 
        }
     
        private void btnStart_Click_1(object sender, EventArgs e)
        {
            if (bgWorker.IsBusy)
                return;
            this.progressBar1.Maximum = 100;
            this.btnStart.Enabled = false;
            this.btnStop.Enabled = true;
            bgWorker.RunWorkerAsync("hello");
        }
 
        private void btnStop_Click_1(object sender, EventArgs e)
        {
            this.btnStart.Enabled = true;
            this.btnStop.Enabled = false;
            bgWorker.CancelAsync();
        }
    }
}

js 判断对象里面有没有值

方法一

var obj={}
if(Object.values(obj).length>0){
    // 有值  
}else{
  // 无
}

方法二

C#判断对象是否有值

//封装为一个方法判断变量是否为空
    isobjEmpty(obj) {
      if (obj === null || obj === undefined || obj === "" || obj.length === 0 || obj === {}) {
        return true;
      } else {
        return false;
      }
    },
    //使用
    if(!this.isobjEmpty(obj)){
        //存在
    }else{
        //不存在
    }

C# 从json中判断某个属性是否存在

                        if (jo.Property("abc") != null)
                        {

                        }

解决SQL SERVER 2012自增ID突然断开的问题(ID突然增加1000的)

微信截图_20230305225138.png

最近这两年创建数据库的自增Id列总是出现一个问题,一开始自增正常,都是1、2、3递增,突然就变成1004、1005这样,一直以为程序有问题,后来多次查阅资料才在国外网站上找到问题。

C#实现程序的版本升级更新

我们做了程序,不免会有版本升级,这就需要程序有自动版本升级的功能。

那么看看我是如何实现程序自动更新的。

直接上代码:

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Reflection;  
using System.IO;  
using System.Net;  
using System.Xml;  
  
namespace Update  
{  
    /// <summary>  
    /// 更新完成触发的事件  
    /// </summary>  
    public delegate void UpdateState();  
    /// <summary>  
    /// 程序更新  
    /// </summary>  
    public class SoftUpdate  
    {  
  
        private string download;  
        private const string updateUrl = "http://www.csdn.net/update.xml";//升级配置的XML文件地址  
 
        #region 构造函数  
        public SoftUpdate() { }  
  
        /// <summary>  
        /// 程序更新  
        /// </summary>  
        /// <param name="file">要更新的文件</param>  
        public SoftUpdate(string file,string softName) {  
            this.LoadFile = file;  
            this.SoftName = softName;  
        }   
        #endregion  
 
        #region 属性  
        private string loadFile;  
        private string newVerson;  
        private string softName;  
        private bool isUpdate;  
  
        /// <summary>  
        /// 或取是否需要更新  
        /// </summary>  
        public bool IsUpdate  
        {  
            get   
            {  
                checkUpdate();  
                return isUpdate;   
            }  
        }  
  
        /// <summary>  
        /// 要检查更新的文件  
        /// </summary>  
        public string LoadFile  
        {  
            get { return loadFile; }  
            set { loadFile = value; }  
        }  
  
        /// <summary>  
        /// 程序集新版本  
        /// </summary> %3B 
        public string NewVerson  
        {  
            get { return newVerson; }  
        }  
  
        /// <summary>  
        /// 升级的名称  
        /// </summary>  
        public string SoftName  
        {  
            get { return softName; }  
            set { softName = value; }  
        }  
 
        #endregion  
  
        /// <summary>  
        /// 更新完成时触发的事件  
        /// </summary>  
        public event UpdateState UpdateFinish;  
        private void isFinish() {  
            if(UpdateFinish != null)  
                UpdateFinish();  
        }  
  
        /// <summary>  
        /// 下载更新  
        /// </summary>  
        public void Update()  
        {  
            try  
            {  
                if (!isUpdate)  
                    return;  
                WebClient wc = new WebClient();  
                string filename = "";  
                string exten = download.Substring(download.LastIndexOf("."));  
                if (loadFile.IndexOf(@"\") == -1)  
                    filename = "Update_" + Path.GetFileNameWithoutExtension(loadFile) + exten;  
                else  
                    filename = Path.GetDirectoryName(loadFile) + "\\Update_" + Path.GetFileNameWithoutExtension(loadFile) + exten;  
                wc.DownloadFile(download, filename);  
                wc.Dispose();  
                isFinish();  
            }  
            catch  
            {  
                throw new Exception("更新出现错误,网络连接失败!");  
            }  
        }  
  
        /// <summary>  
        /// 检查是否需要更新  
        

基于Arduino、ESP8266和ESP32使用LCD显示屏的终极解说教程

 在本篇文章中,我们将主要介绍如何将微控制器与LCD显示屏连接,以及如何制作第一个草图实现在LCD显示屏上显示所需的内容。在本文中,我们将使用两种不同种类的显示屏:●  不带I2C连接的LCD显示屏●  带I2C连接的LCD显示屏在大多数时候,我们使用Arduino IDE自带的串口绘图仪来可视化我们的解决方案或草图的输出。在进行原型制作时,这非常节省时间。但是有时您的系统也会需要实时查看。例如,如果仅将数据从传感器发送到Raspberry Pi上的数据库,则可以通

超全的Arduino、ESP8266和ESP32的I2C接口使用方法教程

 在本篇文章中,我们将更深入研究I2C通信协议。我们将主要介绍以下内容:Arduino和ESP8266微控制器通过I2C连接设备需要哪些引脚、该通信协议的优缺点以及如何使用I2C多路复用器Arduino/ESP8266与其他设备通信,例如OLED显示器、气压传感器等,可以使用I2C通信协议。也可以使用两外两个通信协议:SPI和UART。I2C全称是Inter-Integrated Circuit,是1982年由飞利浦半导体公司(现在为NXP Semiconductors)发明的。I2C
<< 1 2 3 4 > >>
«    2024年5月    »
12345
6789101112
13141516171819
20212223242526
2728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接
    • Z-BlogPHP
    • 订阅本站的 RSS 2.0 新闻聚合

    Powered By Z-BlogPHP 1.7.3

    Copyright iXiaoBai.net Rights Reserved. 吉ICP备18001369号-1 吉公网安备22010202001107