SqlHelper实现
- 往app.config中添加connectionstrings
1 | <connectionStrings> |
-
1
2
3
4public class SqlHelper
{
private string constr;
} 添加引用给constr赋值
1
2
3using System.Configuration;
private string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;编写无返回值,有一行返回值,返回多行,返回datatable的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59public static int ExecuteNoQuery(string sql, CommandType type = CommandType.Text,params SqlParameter[] sqlParameters)
{
using (var con = new SqlConnection(constr))
{
using (var cmd = new SqlCommand(sql, con))
{
if (sqlParameters == null)
return 0;
cmd.Parameters.AddRange(sqlParameters);
cmd.CommandType = type;
con.Open();
return cmd.ExecuteNonQuery();
}
}
}
public static SqlDataReader ExecuteReader(string sql, CommandType type = CommandType.Text,
params SqlParameter[] sqlParameters)
{
using (var con = new SqlConnection(constr))
{
using (var cmd = new SqlCommand(sql, con))
{
if (sqlParameters == null)
return null;
cmd.CommandType = type;
cmd.Parameters.AddRange(sqlParameters);
try
{
con.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception e)
{
con.Close();
Console.WriteLine(e);
throw;
}
}
}
}
public static DataTable ExecuteDataTable(string sql, CommandType type = CommandType.Text,
params SqlParameter[] sqlParameters)
{
var dt=new DataTable();
using (var adapter = new SqlDataAdapter(sql, constr))
{
if (sqlParameters != null)
{
adapter.SelectCommand.Parameters.AddRange(sqlParameters);
}
adapter.SelectCommand.CommandType = type;
adapter.Fill(dt);
}
return dt;
}
md5
MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)。任何长度的任意内容都可以用MD5计算出散列值。介绍工具:CalcMD5.zip。主要作用就是【验明“真身”】,字符串与文件均可。
MD5长度一般是32位的16进制数字符串(比如71f396e4134a1160d90bb1439876df31),MD5值的个数是有限的,但是源数据是无限的,因此存在着不同的内容产生相同MD5值的概率。因此MD5算法不可逆,也就是只能得到内容对应的MD5值,无法由MD5值反推内容。但是对不同的内容产生相同MD5值的概率非常非常非常低!
同一个字符串或文件生成的MD5都是一样的
用处:登录密码存入数据库使用MD5,检验文件是否被修改过
.NET下MD5使用
string的MD5
1 | //创建MD5对象 |
文件的MD5(向ComputeHash
传入流即可)
1 | byte[] md5Bytes; |
其他的散列算法:SHA512或SHA256,用法与MD5一样
1 | SHA512 obj = SHA512.Create(); |
使用NPOI操作Excel
Excel组成:workbook(工作簿),sheet [ʃit] (工作表),row行,cell单元格
先添加NOPI引用
1. 写入excel表单
1 | //创建excel对象(workbook) |
2. 读取excel
1 | private static void ReadFromXls() |
从数据库中导出excel
两步和之前一样
从数据库中读取数据
调用
WriteToExcel(IWorkbook wk,Dictionary<ISheet,List<IRow>> sheets )
对于空处理:从数据库读取为unknown,模型的值类型修改成可空值类型
1
reader.IsDBNull(column)?null:(int?)reader.GetInt32(column);
写入到excel时
1
2
3
4
5ICell cell = row.CreateCell(colomn);
if(read == null)
cell.SetCellType(CellType.BLANK);//设置创建的单元格为空单元格
else
cell.SetCellValue((Type)read);//将Type类型的数据放入cell