惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
月光博客
月光博客
人人都是产品经理
人人都是产品经理
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
Vercel News
Vercel News
MyScale Blog
MyScale Blog
爱范儿
爱范儿
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
H
Help Net Security
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
宝玉的分享
宝玉的分享
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
博客园 - 叶小钗
D
Docker

博客园 - 寒带鱼

协程的原理(Coroutine Theory) SQLite数据库学习小结——Frameworks层实现 SQLite数据库学习小结——native层实现 如何用javascript取出session中的值? - 寒带鱼 - 博客园 连接池泄露了~ Session丢失的解决办法小结 返回动态生成的数组的方法 [翻译]编写高性能Web应用程序的10个技巧 [译]30分钟正则表达式指导 操作Word文档的类(VB.NET) MySQL5.0中文手册(13.1. 数据定义声明) ADO.NET对象模型 妹妹生了个女儿,纪念一下 从ASP.NET得到Microsoft Word文档 短期目标 2005年中国软件产业最大规模前100家企业名单 关于文件操作的问题 做项目的一点收获之一 数组定义的疑问
做项目的一点收获之二
寒带鱼 · 2005-11-01 · via 博客园 - 寒带鱼

写注册表

        程序中要求有个开机自动运行的备选功能,在网上查了查,大概有三种方法实现开机自动运行:开始菜单中的“启动”组,Windows服务,写注册表。我选择了写注册表,代码如下:

if (this.checkBox1.Checked==true)
                
{
                    RegistryKey Reg 
= Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true);
                    
string sFilePath = Application.ExecutablePath;
                    Reg.SetValue(
"DBExchanger",sFilePath);                
                }

                
else 
                
{
                    RegistryKey Reg 
= Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true);
                    Reg.DeleteValue(
"DBExchanger",true);
                }

使用委托

        因为不能够向线程传递参数(可以定义一个类,准备好线程要使用的数据,然后把该类的方法传递给线程委托),也不会返回值,因此要想从线程返回值,可以使用委托。委托使用方法见C#中的代理(Delegate)

检测网络

        程序要求在连接数据库之前要先检测网络是否连通,所以这里又用到了基于套接字的编程。

public bool CheckNet(string netid,int port)
        
{
            
bool flag=true
            
string ip= netid.ToString();
          IPAddress myIP 
= IPAddress.Parse(ip);

          
//根据给定的IP地址字符串,处理IPAddress实例
           try
          
{
             EndPoint ep
=new IPEndPoint(myIP,port);
             Socket sock
=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
             sock.Connect(ep);
             
if (sock.Connected)
             
{
                 flag
=true;
             }

          }
     
          
catch
          
{
             flag
=false;
          }

            
return flag;
        }

最小化到系统托盘

        设置窗体的SizeChanged事件,如下 :

private void Form1_SizeChanged(object sender, System.EventArgs e)
        
{
            
if (this.WindowState==System.Windows.Forms.FormWindowState.Minimized)
            
{
                
this.Hide();
                
this.notifyIcon1.Visible=true;
            }


        }

MySql参数化查询

        这个项目针对的是MySql数据库,以前没有用过,所以在写参数化查询语句还是像写SQL Server和Access参数化查询语句时一样,例如一条查询语句:

cmmd.CommandText="Update TableName Set Name=@Name,Data=@Data Where ID=@ID";
cmmd.Parameters.Add(
"@"+ClmName[0],MySql.Data.MySqlClient.MySqlDbType.String);
cmmd.Parameters[
0].Value = "Peter"
cmmd.Parameters.Add(
"@"+ClmName[1],MySql.Data.MySqlClient.MySqlDbType.LongBlob);
cmmd.Parameters[
1].Value = ByteArrayData;
cmmd.Parameters.Add(MySql.Data.MySqlClient.MySqlDbType.Int32);
cmmd.Parameters[
0].Value = "20051102"

        但就是怎么都更新不了,也没有错误信息,后来经人指点才知道,原来MySql的参数占位符是"?",我把cmmd.CommandText中的"@"改成"?"后就可以了。