C# 지식 포인트, 코드 사양, json, ajax, 데이터베이스, 쿠키, 세션 등의 요약

1: 속성 및 필드
속성 필드
유사점: 둘 다 값 및 할당 작업을 수행할 수 있습니다. 차이점:
1 속성은 비즈니스를 캡슐화할 수 있지만 필드는 할 수 없습니다. 2 속성은 더 안전합니다. 2: 요소는 피연산자

참조 합니다 . 정수 부분이 아닌 나머지 부분 삼항 구문 X ? Y : ZX는 판단식을 나타냅니다 YZ는 결과를 나타냅니다 Y는 참 결과를 나타냅니다 Z는 거짓 결과를 나타냅니다 삼항 연산자는 모든 유형의 값을 반환할 수 있습니다 값의 유형은 물음표에 따라 다릅니다? 후자의 데이터 유형 장점: 코드의 읽기 줄을 개선할 수 있으며 if else 논리 판단을 효과적으로 줄여 코드를 더 간결하게 만들 수 있습니다. 3 : Paging 문: 주의해야 할 주요 문제는 ID 불연속성 문제입니다. ROW_NUMBER() over(order by id asc ) as rowNumber ,













where t.rowNumber between (pageindex-1)pagesize+1 and pageindexpagesize
4:sql语句;
《1》添加语句:insert into table values() insert into table() values()
《2》and且:select * from StudentInfo where Name=‘admin’ and Age=20 and ID=18
《3》or或:select * from StudentInfo where Name=‘admin’ or Age=20 or ID=4
《4》between and 进行区间查询:
select * from StudentInfo where createtime between ‘2019-10-31’ and ‘2019-12-01’
《5》排序 order by asc 升序,desc降序;
select * from dbo.StudentInfo where createtime between ‘2019-10-31’ and ‘2019-12-01’ order by age
《6》模糊查询:1)字段like ‘%张’ 查询最后一个字是张2)字段like ‘张%’ 查询第一个字为张 3)字段like ‘%张%’ 查询带张的,不管是开头的还是结尾的
select * from StudentInfo where Name like ‘%张’
select * from StudentInfo where Name like 'Zhang%'
select * from StudentInfo where Name like '%Zhang%'
"7" – 집계 함수 개수: select COUNT(DistrictID) from S_District
집계 함수 쿼리의 결과는 테이블에 존재하지 않습니다. 즉, 데이터베이스에 의해 계산됩니다.
– 일반적으로 금융 통계에 사용됨
Max: Select max(age) as Num from StudentInfo
Min: select min(age) as Num from StudentInfo
Avg: select avg(age) as Num from StudentInfo
Sum: select sum(age) as Num from StudentInfo
"8": top N Get the first N records in the query results
select top 5 * from d bo.StudentInfo
"9" inner join ...on...on은 관련 관계를 나타냄 select
s.
,(p.ProvinceName+c.City Name+d.DistrictName) Addr from StudentInfo as s
inner join S_District as d on d.DistrictID=s.DistrictID
inner join S_City as c on c.CityID=d.CityID
내부 조인 S_Province를 p.ProvinceID=c.ProvinceID의 p로

예: s를 선택합니다. ,d.DistrictName from StudentInfo as s inner join S_District as d on d.DistrictID=s.DistrictID
《10》左联合
select s.










特点:1)存储在服务器上   2)一个页面存入后,整个网站所有页面都可以访问    3状态是会保持
Session失效情况
1执行代码删除 Session.Remove();
2过期
3关闭浏览器 
作用:1保存用户的信息
    2存值
Session的使用:
(1) //存 Session[“Title”] = “HelloWorld”;//声明一个Session名称叫做Title 将HelloWorld内容赋给Session
Session[“Student”] = 1;
(2)//取 string content = Session[“Title”].ToString();
(3)// 清除整个网站的Session Session.Clear();
//清除某一个Session根据名称 //Session.Remove(“Title”);
6:js
(1)js作用:提高浏览器的功能,为浏览器加入更多的特效,交互效果,方便的控制页面的DOM对象(2)Js判空; function checkEmpty()
{
var txt1 = document.getElementById(“txtName”);
if (txt1.value == “”)
{
alert(‘请输入账号’);
return false;//立即中断当前方法
}
}
7: 프로그램 디버깅
1. C#/.NET 디버깅
1. 무엇이 잘못되었는지 확인합니까? 어디에서 잘못해야 할지 모르겠다면 비즈니스 코드의 첫 번째 단계에 중단점을 설정하십시오.
2 F5 키를 누르거나 실행 버튼을 클릭해야 합니다.
3 프로그램이 중단점까지 실행되면 프로그램이 멈추게 됩니다. 노란색 막대는 라인에 도달했지만 코드 라인이 아직 실행되지 않았음을 나타냅니다.
4F10(라인 바이 라인) 프로세스: 순서대로 코드에 따라 한 줄씩 진행하는 것을 의미하고
F11
명령문별: 디버깅에 적합하며 일부 메소드 또는 속성 뒤에 많은 구현 코드가 있을 때 내부에서 발생한 일을 보려면 명령문별 명령을 사용해야 합니다.

일반적인 실수
개체 참조가 개체의 인스턴스로 설정되지 않음
증상: 프로그램이 개체를 찾았지만 지정한 검색 방법을 통해 개체를 찾을 수 없습니다.
위치 0에 어떤 행도 없습니다.
증상: 일반적으로 배열이나 ds에서 값을 가져올 때 DS가 비어있을 가능성이 있으므로 첫 번째 행의 필드를 가져올 때 오류가 보고됩니다.
XXX 증상 근처에 구문 오류가 있습니다
: 10000% SQL 문

2. js 디버깅
alert()
console.log()
1 신뢰할 수 있는 브라우저 Google/Firefox
2 F12 키를 눌러 페이지에 오류가 있는지 확인
3 최종 해결 방법은 디버거 설정 F10
프로세스별 프로세스
F11 명령문별

VS는 줄 번호
Tools-Options-Text Editor-C#를 호출합니다. 줄 번호
8을 확인합니다. 물리적 경로: E:\D:\Image 디스크에 실제로 저장된 경로\ 백슬래시 1은 경로의 깊이를 나타냅니다. 2 이스케이프 문자 \n은 컴퓨터에 내장된 명령입니다.
9: 가상 경로: http://www.baidu.com/img/logo.png 거짓, 웹 페이지의 위치를 ​​나타냅니다. 파일은 방문자의 컴퓨터에 없으며 원하는 경우 다운로드해야 합니다. / 슬래시 1은 웹 페이지에서 경로 깊이의 역할을 나타냅니다. 가상 경로를 사용하여 파일과 사진을 봅니다.
10: 상대 경로 및 절대 경로:
장점 및 단점: 상대 경로 경로 깊이는 상대적으로 작고 효율성은 절대 경로보다 높습니다. 파일의 위치는 개발자가 고려해야 합니다. 비교적 간단합니다. 호출자가 어디에 있는지 알 필요가 없으며 필요한 파일이 어디에 있는지에만 주의하면 됩니다. 효율성은 상대적으로 낮습니다.

11: //문자열
//C# 유형 참조 유형
문자열 이름 = "장산";//문자열
//-- 문자열의 일반적인 작업 방법:

        //1字符串可以相加,首位相连。
        string age = "20";
        string result = name + age;
        Response.Write(result+"<br/>");
        
        
        //2字符串的截取:substring()  需要两个参数  1起始位置索引   2长度(可选的,如果不写,那么默认截到尾)
        string picname = "abc.jpg";
        //希望获取picname变量图片扩展名
        string ename = picname.Substring(4);
        Response.Write(ename + "<br/>");
        string picname2 = "/Images/20191101008.jpg";
        //string num = picname2.Substring(16, 3);
        string num = picname2.Substring(picname2.LastIndexOf('.')-3, 3);
        Response.Write(num + "<br/>");
        
        
        //3indexof()获取某一个字符所在的位置第一个出现位置的索引
        ///lastindexof()获取最后一个字符在字符串中所出现的位置
        int index1 = picname2.LastIndexOf('.');
        Response.Write(index1 + "<br/>");
        
        
        //4字符串格式化
        string day = System.DateTime.Now.ToString();
        string dayFormat = System.DateTime.Now.ToString("yyyyMMdd");
        string dayTimeFormat = System.DateTime.Now.ToString("yyyyMMdd HH:mm:ss"); //year  Month day   hour  Minute Second
        Response.Write(day.Substring(0,10) + "<br/>");//千年虫病毒  2000年  194X   1999 12 31  2000  10001-01-01
        Response.Write(dayFormat+ "<br/>");
        Response.Write(dayTimeFormat + "<br/>");
        string number1 = "009";
        int number2 = Convert.ToInt32(number1) + 1;
        Response.Write(number2.ToString("D3") +"<br/>");



        //5验证字符包含方法
        string today = "1102";
        string day1 = "20191120";
        bool resul1=   day1.Contains(today);//把today字符串放入到day1中验证 day1是否包含today
        Response.Write(resul1 + "<br/>");
    

        //6字符串拆分方法Split('字符')
        string namelist = "张三,李四,王五";
        string[] list= namelist.Split(',');
        Response.Write(list[0]+list[1]+list[2]);


        //7字符串长度 
        Response.Write(namelist.Length);

12: ajax
onblur: loss of focus event
onfocus: get focus event
//ASYNC javascript and xml
function setData() { //사업 아이디어: //1 입력이 끝나고 포커스를 잃으면 이 이벤트가 발생합니다. // 2 사용자가 입력한 계정을 서버로 보내도록 ajax 요청을 시작하고 싶습니다. 사용자가 입력한 내용 가져오기 var name = doc ument.getElementById( “txtAccout”).value; //AJAX를 수행하려면 어떻게 해야 합니까? //1 xmlhttprequest 객체 생성 //2 객체 액세스 허용.open() .send() //3객체 상태 및 액세스된 서버 상태 판단 // 지식 포인트: XMLHttpRequest 객체 비동기 요청 객체 //핵심 객체 변수 생성 var xmlhttp = null; //ajax 액세스에 사용되는 xmlhttprequest 객체를 생성합니다. if (window.XMLHttpRequest) {// Firefox, Opera, IE7 등을 위한 코드 xmlhttp = new XMLHttpRequest();//객체 생성

















} else if (window.ActiveXObject) {// code for IE6, IE5
xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”); //객체 생성
}
//xmlhttprequest 객체는 5가지 상태를 가집니다
. //0 1 2 3 4 4번을 제외하고 모두 틀렸습니다.
xmlhttp.onreadystatechange = function () { //xmlhttp.readyState == 4 개체가 정상적으로 작업을 수행할 수 있도록 //xmlhttp.status == 200 http 상태 코드 //개체가 성공적으로 생성되고 액세스할 백그라운드도 정상이면 여기에서 비동기 액세스가 종료되고 백그라운드에서 나에게 주어진 결과를 기다립니다 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //...콜백 함수 //responseText 터미널에서 반환된 결과는 우리가 원하는 true 및 false입니다 var result = xmlhttp.responseText; if (result == "true") { document.getElementById("sp1").style.display = "none"; } else { // 계정 사용할 없습니다 .












document.getElementById("sp1").style.display = "블록";

                }
            }
        }
        //open设置请求方式和请求路径
        xmlhttp.open("get", "AjaxChildDemo.aspx?name=" + name + "");
        //send发送
        xmlhttp.send();
        //总结:
        //1用户输入结束后,触发一个JS事件
        //2创建一个xmlhttprequest对象,携带验证信息访问服务端(.NET程序)
        //3等待服务端返回结果
        //4根据结果进行业务逻辑判断
    }

13:
public void ProcessRequest(HttpContext context)//요청 컨텍스트 객체: 모든 페이지의 요청 부분은 컨텍스트 객체
{ //paging sql 문을 통해 데이터를 쿼리합니다. //현재 페이지 번호 받기 int pageindex = Convert.ToInt32(context.Request["pageindex"]); DataSet ds = SqlDbHelper.Query(@"select * from (select ROW_NUMBER() over(order by ProvinceID asc) as rowNumber, * from S_Province) as t where (" + page index + "-1) 10+1 and " + pageindex + " 10" 사이의 t.rowNumber) ; if (ds.Tables[0].Rows.Count > 0) { //문자열 테이블 tr td // 문자열 str = "








";
StringBuilder str = new StringBuilder();//가변 길이 문자열 클래스 생성
str.Append("");
str.Append("");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//현재 순회 행의 ID 열과 지방 이름 열 값을 가져옵니다.
//tr에 철자합니다.
str.Append("");
}
str.Append("
기본 키 지방 이름
” + ds.Tables[0].Rows[i][“ProvinceID”] + “ ” + ds.Tables[0].Rows[i][“ProvinceName”] + “
");//table
//총 페이지 수 계산?
//Total number/pagesize(10)
DataSet dsCount = SqlDbHelper.Query("select * from s_province");
var count = 0;
//30/10=3 34/10=3
if (dsCount.Tables[0].Rows.Count % 10 == 0)
{ // 나머지가 없는 경우 Pages = 총 항목 수/페이지 size count = dsCount.Tables[0].Rows.Count / 10; } //남은 경우 Pages = total entries/pagesize+1; else {
count = dsCount.Tables [0].Rows.Count / 10 + 1; } str.Append("");//table str.Append( count);// table count str.Append(" "); //페이지 바닥글











str.Append("이 페이지" + ds.Tables[0].Rows.Count + "현재 기사가 있음" + pageindex + "/" + count + "총 페이지 수" + count + "페이지");//table count footer context.Response.Write(str.ToString()); } 14: JSON 경량: 바인딩
적고 간단 합니다 . 데이터 전송: 이 기능은 데이터 교환에 사용됩니다. 형식: 형식 규칙. JSON 형식: JSON의 공통 형식 1: {"key":"value"} 가장 간단한 json 형식은 키-값 쌍으로 결합된 JSON 객체임을 나타내기 위해 중괄호로 싸여 있습니다. Address":"Henan"},{ "Name": "Li Si", "Age": "20", "Address": "Hebei"}] JSON에는 쉼표로 구분된 여러 객체가 포함됩니다. 공통 형식 3: 객체에서 특정 속성에 해당하는 값은 목록 / 세트 / 배열 입니다.













{"Name":"Zhang San", "Age":"18", "Address":"Henan", "BookList":[{"BookName":"js"},{"BookName":"c#"}]} 15: 직렬화, 역직렬화; 직렬화: 개체를 전송할 수 있는 데이터 형식으로 변환
합니다
.
역직렬화: 전송 가능한 데이터 형식을 개체로 변환합니다.
일반적으로 사용되는 두 가지 데이터 전송 형식인 JSON 및 XML이 있습니다.

17:

// 페이지 전달 값:
QueryString(URL 전달 값)
세션: 서버에 저장되며, 페이지는 전체 웹사이트에 저장되며 모든 페이지를 조회할 수 있습니다. 사용자 세션이 로그인되었습니다.
쿠키: 클라이언트 측에서 데이터를 저장하는 데 사용됩니다. 클라이언트는 브라우저를 의미합니다.
기능:
1 프로그래머는 값을 저장하는 데 사용합니다.
2 브라우저 캐시

    缺点:既然是存储在客户端的,那么安全问题就是由客户端解决,所以就导致安全度较低。
    建议:不要将特别重要的数据存入到cookie中

18: protected void Button1_Click(object sender, EventArgs e)
{ //.NET은 쿠키 작업을 캡슐화합니다. HttpCookie cookie = new HttpCookie("DotnetCookie");//dotnet이라는 이름의 쿠키를 만듭니다. // Assign cookie.Value = "123"; cookie.Expires = System.DateTime.Now.AddHours(24);//설정이 유효합니다. Period Response.Cookies.Add(cookie);//response //Request.Cookies } protected void Button2_Click(object sender, EventArgs e) { //이 때 값을 가져오기 때문에 값은 클라이언트에 있고, 서버가 클라이언트의 것을 원하면 request HttpCookie cookie = Request.Cookies[“DotnetCookie”];//Get cookie if (cookie != null) { Response.Write(cookie.Name + "/ ” + 쿠키 . ) ; } }

















protected void Button3_Click(object sender, EventArgs e)
{ //클라이언트에서 먼저 쿠키를 가져온 다음 유효 기간을 변경하고 클라이언트에 새 쿠키를 저장하여 원래 쿠키를 덮어쓰도록 지시합니다.//클라이언트에서 쿠키를 가져옵니다. HttpCookie cookie = Request.Cookies[“DotnetCookie”]; //유효 기간을 재설정합니다. .Cookies.Add(cookie); } 19: 코드 사양 매우 매우 중요 합니다 . 두 세트의 표준 1 카멜 케이스 작명 방법 이름 nameAndStudent 첫 번째 단어의 첫 글자는 소문자, 다른 단어의 첫 글자는 대문자 2 파스칼 이름 NameAndStudent 단어의 첫 글자는 모두 대문자













.NET 코드 사양(시스템 내장 개체는 Pascal을 따름)
변수 명명: 의미 있고 짧은
Int age
String name
String studentname studentName StudentName

String SelectQueryLanguageConnectionStringAddress="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
문자열 sqlconn=”XXXXXXXXXXXXXXXXXXXXXXXXXX”

클래스, 메서드, 속성 이름 지정: 의미 있고 짧은 파스칼 이름 지정

컨트롤 명명 : ASP.NET WEBFORM 프레임워크의 모든 컨트롤 Microsoft에는 통합
명명 규칙 있습니다 . 필드 hf- *










기본 제공 클래스의 개체 이름
SqlConnection conn
SqlDataAdapter sda
SqlCommand cmd
DataSet ds

프런트 엔드 js
명명 규칙, 험프 명명

데이터베이스 명명 규칙
데이터베이스 키워드를 사용하지 마십시오.
도서관 학생 학생 정보의
이름은 의미가 있습니다 . 테이블의
이름 의미가 있습니다
.



SQL 문: 모든 키워드는 대문자로, 키워드가 아닌 다른 단어는 사용자 정의 대문자로 대문자로 표시
SELECT * FROM StudentInfo 1
select * from studentinfo 2
저장 프로시저
트리거
트랜잭션
커서

인덱스
...

추천

출처blog.csdn.net/m0_46454966/article/details/127295532