类注释用
///
错误信息可直接 Ctrl+C
#region
#endregion 折叠
输入Cw两次按Tab可快速得到Console.WriteLine();
Console.WriteLine("{0}的年龄是{1},学历是{2}",name,age,edu);
Convert.ToString(163); Convert.ToInt32("78"); 类型转换
Console.Clear(); 清屏
out ref 用户向调用函数传值,out、ref关键词两边都得有
if(str1.Equals(str2)) if(str1.Equals(str2,StringComparison.OrdinalIgnoreCase)) 字符串比较
if(str1.ToUpper().Equals(str2.ToUpper())) str.ToLower() 字符串大小写转换
所有的对象实例都可以掉用.ToString()方法
str.SubString(6,3) str.Contains("自由") str.Split(' ') str.Split(' ','-','/') 可为字符、字符串、字符数组等
str.StartWith("kai") str.EndWith("jin") int n = "Hello,World!".IndexOf("wo",3) 3为起始位置。不包含则返回-1
-----------------------------------------------------------------------
select count(*) from T_Person;
select max(salary) from T_Person;
select min(salary) from T_Person;
select avg/sum(salary) from T_Person;
select * from T_Person order by age ASC/DESC; 升序、降序
select * from T_Person order by age DESC,salary ASC;
select * from T_Person where salary>5000 order by age DESC; where在order by前
select * from T_Person where name Like '_kai' or name Like '%kai%' 通配符:_单个字符、%多个字符
where age between 20 and 30
select age count(*) from T_Person group by age;
select age,max(salary),count(*) from T_Person group by age
除了聚合函数外
select age,count(*) from T_Person group by age Having count(*)>1 having对分组后的数据进行过滤
select top 3 *from T_Person order by salary DESC top关键词用于选择前N个
select top 3 *from T_Person where Fnumber not in (select top 5 Fnumber from T_Person order by salary DESC)order by salary DESC;
不在前五中的前三,也就是第6-8名 不在前五 前五
alter Table T_Person add company varchar(20); 新增加一个字段
select distinct department from T_Person; 排除重复项
select distinct department,company from T_Person; distinct针对整行排除重复,并非只针对department
select name,age from T_Person
Union union联合 联合结果类 合并重复项
select name,age from T_employee; 字段数量要一致,类型要相容(相同最好)可以不同
select number,salary from T_Person
union all
select '合计',sum(salary) from T_Person; union all 补全字段已相同
ABS()求绝对值 Ceiling()舍入到最大整数 Floor()舍入到最小整数 Round()四舍五入
Len()求字符串长度 Lower() Upper() LTrim() RTrim() 去空格 没有trim() substring(string,startposition,length)
-----------------------------------------------------------------------
enum color 枚举
{ Red,
Yellow, Blue, Green=5, White} 那么Red=0 Yellow=0 Blue=0 Green=5 White=6 赋值的后面自动递增
二维数组
int[,] a = new int[,]{{1,1},{2,2},{3,3}};
不规则数组,必须对各子数组进行初始化, 访问时用a[x][y]
int[][] a = new int[3][];
a[0] = new int[]{1};
a[1] = new int[]{1,2};
a[2] = new int[]{1,2,3};
string str1 = "C:\\a\\b.txt"; string str2 = @"C:\a\b.txt"; @符号表示忽略转义字符的分隔符,str1和str2完全相同
string str = "Hello";
Console.WriteLine(String.Copy(str)+str.SubString(3,2)+str.Insert(3,"*****"));
结果分别是对str的复制,sub,插入: Hello lo Hel****lo
int num = int.Parse(Console.ReadLine()); int num = Convert.ToInt32(Console.ReadLine());
char[] c = Console.ReadLine().ToCharArray();
字符比较 if(char[0]>='0' && char[0]<='9') if(char[0]>='a' && char[0]<='z')
switch(表达式) //可为整数类型和字符串类型
{ case 1: -----; break;
case 2: -----; break;
default: ------; break; //break必须有!不可穿透。 default可有可无
}
foreach(string name in new string[]{"gukai","guxiaofei","luyong"}) {} 不用考虑数组下标越界
main方法中用return则程序结束
params数组型参数
public int drink(int id,params string[] name) {}
1 调用的时候用 int kk = drink(33,"gu","fu","lu"); 或者string[] aa = {"aa","bb","cc"}drink(33,aa); 长度可变
2 一个方法中只能声明一个params参数
3 params参数必须在所有参数之后
4 必须为一位数组
5 不能同时使用out和ref关键词
索引器--------------------------有待学习
-----------------------------------------------------------------------
SqlConnection conn = new SqlConnection("Database='hrms';Data Source='192.168.4.160';User Id='root';Password='dada7020';charset='utf8';pooling=true");
SqlCommand cmd = conn.CreateCommand()
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = cmdText;
SqlDataReader reader = cm.ExecuteReader();
while(reader.Read()) { }
conn.Open(); conn.Close(); conn.Dispose(); 用using最方便。 出了using作用域后调用dispose,并判断是否close了,using语句自动先close再dispose
SQL 注入漏洞攻击 ------where password = 'kai' or '1'='1';
需参数化查询 cmd.CommandText = "select * from where name = @name and password = @password";
cmd.Paraneters.Add(new SqlParaneters("@name",name)); cmd.Paraneters.Add(new SqlParaneters("@password",password);
MySql中用?做参数化查询的标记
winform中
this.AcceptButton = button1; this.CancelButton = button2;
NumericUpDown 控件 numericUpDown1.Maximun = 25; numericUpDown1.DecimalPlaces = 2;
SqlServer
getDate()获得当前日期 DateAdd(datepart,number,date) 参数分别为计量单位、数值,日期 datepart 可以为year\month\day\hh\yy等
DATEADD(MONTH,-8,getDate())当前日期向前8个月 DateDiff(datepart,startdate,enddate)计算日期的差值
select DateDiff(year,FinDate,getDate()),count(*) from T_Person group by DateDiff(year,FinDate,getDate());
cast类型转换
select Cast('123' as int),Cast('200-08-08' ad datetime) from T_Person; 或者Convert(datetime,'2009-09-09') convert(varchar(50),1234)
select IsNull(FName,'佚名') as 姓名 from T_Person 如果为空则返回佚名,否则返回FName
case的使用
select name,
(case level
when 1 then '普通用户'
when 2 then '会员'
when 3 then 'VIP'
else '未知客户' 此处无then!
end) as 客户类型 from T_Person; 注意sql语句中的case的括号为小括号!
select name,
(case 若case不是固定值,则case后无字段名
when salary<2000 then '低收入'
when salary>4000 then '高收入'
else '一般收入'
end) as 收入水平 from T_Person;
select *from (select u.User_Name,u.Name,l.Operation_Time,l.Content from user_info u, operation_log l where u.ID = l.User_ID)as aa where user_ID=1;
自动对查询结果添加序号
"SET @row_number =0; select @row_number := @row_number+1 AS 序号,data_name as 日期 from dicdata_type_info where id>5;
对于设有外键的值进行操作时需先取消其对外键的检查
set FOREIGN_KEY_CHECKS=0;
insert into dictionary_info (pid,data_name,data_type_id,del_flg,lastupdateuser,lastupdatetime)values(0,'" + data_name + "',200,0,1,'20120202');
set FOREIGN_KEY_CHECKS=1;
-----------------------------------------------------------------------
创建日志的函数
public void CreateLog(string log)
{
string time = DateTime.Now.ToString("yyyyMMddhhmmss");
StreamWriter sw = new StreamWriter("Log.txt",true,System.Text.Encoding.GetEncoding("UTF-8"));
sw.WriteLine(time+":"+ log);
sw.Flush();
sw.Close();
}
错误信息可直接 Ctrl+C
#region
#endregion 折叠
输入Cw两次按Tab可快速得到Console.WriteLine();
Console.WriteLine("{0}的年龄是{1},学历是{2}",name,age,edu);
Convert.ToString(163); Convert.ToInt32("78"); 类型转换
Console.Clear(); 清屏
out ref 用户向调用函数传值,out、ref关键词两边都得有
if(str1.Equals(str2)) if(str1.Equals(str2,StringComparison.OrdinalIgnoreCase)) 字符串比较
if(str1.ToUpper().Equals(str2.ToUpper())) str.ToLower() 字符串大小写转换
所有的对象实例都可以掉用.ToString()方法
str.SubString(6,3) str.Contains("自由") str.Split(' ') str.Split(' ','-','/') 可为字符、字符串、字符数组等
str.StartWith("kai") str.EndWith("jin") int n = "Hello,World!".IndexOf("wo",3) 3为起始位置。不包含则返回-1
-----------------------------------------------------------------------
select count(*) from T_Person;
select max(salary) from T_Person;
select min(salary) from T_Person;
select avg/sum(salary) from T_Person;
select * from T_Person order by age ASC/DESC; 升序、降序
select * from T_Person order by age DESC,salary ASC;
select * from T_Person where salary>5000 order by age DESC; where在order by前
select * from T_Person where name Like '_kai' or name Like '%kai%' 通配符:_单个字符、%多个字符
where age between 20 and 30
select age count(*) from T_Person group by age;
select age,max(salary),count(*) from T_Person group by age
除了聚合函数外
select age,count(*) from T_Person group by age Having count(*)>1 having对分组后的数据进行过滤
select top 3 *from T_Person order by salary DESC top关键词用于选择前N个
select top 3 *from T_Person where Fnumber not in (select top 5 Fnumber from T_Person order by salary DESC)order by salary DESC;
不在前五中的前三,也就是第6-8名 不在前五 前五
alter Table T_Person add company varchar(20); 新增加一个字段
select distinct department from T_Person; 排除重复项
select distinct department,company from T_Person; distinct针对整行排除重复,并非只针对department
select name,age from T_Person
Union union联合 联合结果类 合并重复项
select name,age from T_employee; 字段数量要一致,类型要相容(相同最好)可以不同
select number,salary from T_Person
union all
select '合计',sum(salary) from T_Person; union all 补全字段已相同
ABS()求绝对值 Ceiling()舍入到最大整数 Floor()舍入到最小整数 Round()四舍五入
Len()求字符串长度 Lower() Upper() LTrim() RTrim() 去空格 没有trim() substring(string,startposition,length)
-----------------------------------------------------------------------
enum color 枚举
{ Red,
Yellow, Blue, Green=5, White} 那么Red=0 Yellow=0 Blue=0 Green=5 White=6 赋值的后面自动递增
二维数组
int[,] a = new int[,]{{1,1},{2,2},{3,3}};
不规则数组,必须对各子数组进行初始化, 访问时用a[x][y]
int[][] a = new int[3][];
a[0] = new int[]{1};
a[1] = new int[]{1,2};
a[2] = new int[]{1,2,3};
string str1 = "C:\\a\\b.txt"; string str2 = @"C:\a\b.txt"; @符号表示忽略转义字符的分隔符,str1和str2完全相同
string str = "Hello";
Console.WriteLine(String.Copy(str)+str.SubString(3,2)+str.Insert(3,"*****"));
结果分别是对str的复制,sub,插入: Hello lo Hel****lo
int num = int.Parse(Console.ReadLine()); int num = Convert.ToInt32(Console.ReadLine());
char[] c = Console.ReadLine().ToCharArray();
字符比较 if(char[0]>='0' && char[0]<='9') if(char[0]>='a' && char[0]<='z')
switch(表达式) //可为整数类型和字符串类型
{ case 1: -----; break;
case 2: -----; break;
default: ------; break; //break必须有!不可穿透。 default可有可无
}
foreach(string name in new string[]{"gukai","guxiaofei","luyong"}) {} 不用考虑数组下标越界
main方法中用return则程序结束
params数组型参数
public int drink(int id,params string[] name) {}
1 调用的时候用 int kk = drink(33,"gu","fu","lu"); 或者string[] aa = {"aa","bb","cc"}drink(33,aa); 长度可变
2 一个方法中只能声明一个params参数
3 params参数必须在所有参数之后
4 必须为一位数组
5 不能同时使用out和ref关键词
索引器--------------------------有待学习
-----------------------------------------------------------------------
SqlConnection conn = new SqlConnection("Database='hrms';Data Source='192.168.4.160';User Id='root';Password='dada7020';charset='utf8';pooling=true");
SqlCommand cmd = conn.CreateCommand()
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = cmdText;
SqlDataReader reader = cm.ExecuteReader();
while(reader.Read()) { }
conn.Open(); conn.Close(); conn.Dispose(); 用using最方便。 出了using作用域后调用dispose,并判断是否close了,using语句自动先close再dispose
SQL 注入漏洞攻击 ------where password = 'kai' or '1'='1';
需参数化查询 cmd.CommandText = "select * from where name = @name and password = @password";
cmd.Paraneters.Add(new SqlParaneters("@name",name)); cmd.Paraneters.Add(new SqlParaneters("@password",password);
MySql中用?做参数化查询的标记
winform中
this.AcceptButton = button1; this.CancelButton = button2;
NumericUpDown 控件 numericUpDown1.Maximun = 25; numericUpDown1.DecimalPlaces = 2;
SqlServer
getDate()获得当前日期 DateAdd(datepart,number,date) 参数分别为计量单位、数值,日期 datepart 可以为year\month\day\hh\yy等
DATEADD(MONTH,-8,getDate())当前日期向前8个月 DateDiff(datepart,startdate,enddate)计算日期的差值
select DateDiff(year,FinDate,getDate()),count(*) from T_Person group by DateDiff(year,FinDate,getDate());
cast类型转换
select Cast('123' as int),Cast('200-08-08' ad datetime) from T_Person; 或者Convert(datetime,'2009-09-09') convert(varchar(50),1234)
select IsNull(FName,'佚名') as 姓名 from T_Person 如果为空则返回佚名,否则返回FName
case的使用
select name,
(case level
when 1 then '普通用户'
when 2 then '会员'
when 3 then 'VIP'
else '未知客户' 此处无then!
end) as 客户类型 from T_Person; 注意sql语句中的case的括号为小括号!
select name,
(case 若case不是固定值,则case后无字段名
when salary<2000 then '低收入'
when salary>4000 then '高收入'
else '一般收入'
end) as 收入水平 from T_Person;
select *from (select u.User_Name,u.Name,l.Operation_Time,l.Content from user_info u, operation_log l where u.ID = l.User_ID)as aa where user_ID=1;
自动对查询结果添加序号
"SET @row_number =0; select @row_number := @row_number+1 AS 序号,data_name as 日期 from dicdata_type_info where id>5;
对于设有外键的值进行操作时需先取消其对外键的检查
set FOREIGN_KEY_CHECKS=0;
insert into dictionary_info (pid,data_name,data_type_id,del_flg,lastupdateuser,lastupdatetime)values(0,'" + data_name + "',200,0,1,'20120202');
set FOREIGN_KEY_CHECKS=1;
-----------------------------------------------------------------------
创建日志的函数
public void CreateLog(string log)
{
string time = DateTime.Now.ToString("yyyyMMddhhmmss");
StreamWriter sw = new StreamWriter("Log.txt",true,System.Text.Encoding.GetEncoding("UTF-8"));
sw.WriteLine(time+":"+ log);
sw.Flush();
sw.Close();
}