Environment.CurrentDirectory
解释: 但会当前工作目录文件下,调试环境下Debug2.Httplistener类使用
属性:isSupported检测当前系统是否支持,必须在xp sp2或者server2003通过new创建实例
添加监听IP,实例.Prefixes.Add(URL)
开启监听:实例.Start();
******在使用网络相关的时候注意使用try-catch*************
开启监听常见问题:拒绝访问
方案1. 如果是win7或者win8,在cmd.exe上右键,以管理员身份运行,然后执行下面的命令
netsh http add urlacl url=http://本机IP:1500/ user=用户名(如Administrator)
方案2:关闭防火墙
方案3:如果上述步骤还是解决不了问题的话.那么请右键-管理员运行vs,保准药到病除.注意,如果在win7,win8中生成的程序也要用管理员模式打开
left join 表1 on 表1.col=表2.col 左连接
(数据库中多条件连接) 可以不满足left join 的条件
(表1.col=’2’ or 表1.col=’3’) and …
inner join 内连接 ()必须满足inner join’ 的条件
在使用string.Format时.如果字符串本身的字段需要{ } 则需要使用{{ }}
使用Thread.Sleep(int time)
设置时间间隔
将字符串转换为字节数组
编码格式自定义
byte[] bs=Encoding.UTF8.GetBytes(str)
HttpWebRequest类
工厂 通过create创建
实例:HttpWebRequest request=(HttpWebRequest)HttpWebRequest.Create(URL)
设置传送方式
request.Method=”post” //get
设置语言格式
request.ContentType=”application/json”
设置长度
request.ContentLength=bs.length (传递字节数组)
//设置代理
request.Proxy=null;
//设置超时时间
request.TimeOut= number;
//设置自定义头部
request.Headers.Add(“str”,”str1”)
//写入流 主要方法 GetRequestStream
注意连接 using
using (Stream stream =request.GetRequestStream())
{
stream.Write(bs,0,bs.length);
}
//读取响应体
主要方法 GetResponse
实例
HttpWebResponse response=(HttpWebResponse) request.GetResponse();
//读取响应体内容
主要方法 GetResponseStream() 注意解码转码
注意关闭连接
using (StreamReader reader=new StreamReader(response.GetResponseStream(),Encoding.GetEncoding("UTF-8")))
{
string responseData=reader.ReadToEnd();
}
发送回响应内容
System.IO.Stream output = response.OutputStream;
System.IO.StreamWriter writer = new System.IO.StreamWriter(output);
writer.Write(nowData);
// 必须关闭输出流
writer.Close();
字符串是否包含 Contrains() 添加 insert (不修改原数据)
将json字符串转换为可使用的对象
方法: 1.创建类
public class GetKey
{
public data Data { get; set; }
public string code { get; set; }
public class data
{
public string ID { get; set; }
public string NAME { get; set; }
public string KEY { get; set; }
}
}
其中 data Data 是包含在data中的,str为包含json的字符串
使用方法GetKey KeyModel=JsonConvert.DeserializeObject<GetKey>(str)
直接点出来可以使用
事务的执行
注意,其中必须为他们选定事务
sda1.SelectCommand.CommandType = CommandType.Text;
sda1.SelectCommand.Transaction = trans;
//为必加项,不然会报错
实例:
Sqlconnection cnn=new SqlConnection(str);
SqlCommand cm1;
SqlCommand cm2;
cnn.Open();
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
string message;
using (SqlTransaction trans = cnn.BeginTransaction())
{
try
{
cm1 = new SqlCommand(sql1, cnn, trans);
//添加流程表数据
SqlDataAdapter sda1 = new SqlDataAdapter(cm1);
sda1.SelectCommand.CommandType = CommandType.Text;
sda1.SelectCommand.Transaction = trans;
sda1.Fill(dt1);
if (dt1.Rows.Count != 1)
{
trans.Rollback();
}
else
{
cm2 = new SqlCommand(sql2, cnn, trans);
message = dt1.Rows[0]["id"].ToString();
SqlDataAdapter sda2 = new SqlDataAdapter(cm2);
sda2.SelectCommand.CommandType = CommandType.Text;
sda2.SelectCommand.Transaction = trans;
sda2.Fill(dt2);
if (dt2.Rows.Count != 1 || dt2.Rows.Count == 0)
{
trans.Rollback();
}
else
{
trans.Commit();
}
}
}
catch (Exception ex)
{
message = ex.Message + "sql语句1:" + sql1 + " sql语句2:" + sql2;
trans.Rollback();
}
finally
{
cnn.Close();
trans.Dispose();
cnn.Dispose();
}
return message;
}
}
代码书写风格
先将异常情况先写完,在写正常情况
(正常情况数据量太大.写完忘记异常情况了)
线程池
Threadpool.QueueUserWorkItem(new WaitCallback(function),data)