整理了下C#語言和資料庫技術基礎,作為複習資料
第一章
一、c#和JAVA對比:1.c#用命名空間(namespace)java用包(package)
2.引入命名空間或包的關鍵字C#用using,JAVA用import
3.程式入口:C#的Main()有四種形式static void Main(string[] args)
static int Main(string[] args)
static void Main()
static int Main()
JAVA的MAIN()有一種形式
4.變量命名規則:C#以字母和下劃線開頭,JAVA以字母下劃線和$開頭
5.資料類型對比:int,float,double,兩者相同,
字元串型JAVA用String
C#用string.布爾JAVA用boolean C#用bool
5.行注釋和塊注釋一樣,都是//和/*...*/文檔注釋不同,C#用///,每行都以///開頭
二、常量定義:const 資料類型 常量名稱=值;
三、用占位符輸出資訊:console.WriteLine("{0}{1}",name,age);
四、console.ReadLine();傳回字元串型,轉換用parse int age=int.parse(console.ReadLine());
五、方法命名用Pascal方法,每個單詞開頭字母大寫;變量命名駝峰法,第一個字母小寫,後單詞首字母大寫;
六、調試程式:F5:開始調試
Shift+F5:停止調試
F9:設定或取消斷點
Ctrl+F9:取消斷點
F10:單步執行
F2:轉到所調用過程或變量的定義
ctrl+F2:将焦點轉移到類的下拉清單框
第二章 C#文法快速熱身
一、JAVA和C#選擇結構對比:1.大括号寫法規範 C#if和else各占一行如:if
{
}
JAVA 左邊大括号緊跟IF或else之後,右括号另起一行
2.switch選擇結構中 C#要求每個case和default都要有break語句,除非2個case之間
沒有其他語句,同時執行一個結果。
JAVA不強求,沒有break繼續執行下行。
3.switch選擇結構中,在c#中switch括号裡可以用string 變量 int ,char
JAVA不能用string,隻能用int 或char
二、數組JAVA和C#對比:1.聲明方式不同 JAVA聲明數組有2種方式:資料類型[] 數組名;
資料類型 數組名[];
C#隻有一種:資料類型[] 數組名;
2.初始化:JAVA初始化數組時候,直接給數組指派時如:int names[]=new int[]{1,2,3};
int[] names=new int[]{1,2,3};
int[] names=new int [3];
names[0]=1;
names[1]=2;
...
int[] names={1,2,3};
但是不能用int[] names=new int[3]{1,2,3};
也就是說不能給數組長度的同時指派
C#給數組指派時:int[] names=new int[3]{1,2,3};這樣可以
也可以int [] names=new int[]{1,2,3};
也可以int[] names={1,2,3};
三、給對象數組元素指派時要先執行個體化對象,再為每個對象的字段指派,如:
//定義對象數組
Student[] stu=new Student[3];
//為對象數組元素指派
stu[0]=new Student();
stu[0].name="";
stu[0].age="";
四、循環結構:C#和JAVA中都有while循環、do-while循環、for循環,文法結構一樣,但C#多了一種循環foreach結構
文法:foreach(元素類型 元素變量名 in 數組)如://輸出數組array中的數字
int[] array=new int[5]{0,1,2,3,4};
foreach(int item in array)
{
console.WriteLine(item+"");
}
foreach結構不能改變數組中各元素的值,隻是對各個資料執行指定的操作,用于周遊給定數組的所有值。
如輸出字元串中的每個字:
string str="飛翔吧,小鳥";
//循環輸出字元
foreach(char c in str)
{
Console.WriteLine(c);
}
五、除了在switch中用break,也可以用在循環結構中,使程式跳出目前循環結構,繼續執行循環後面的語句
continue和break類似,出現在循環結構中。作用是退出目前循環結構的本次循環,開始執行目前循環的
下一次循環,并不是退出目前循環結構。
六、冒泡排序:(升序口訣)
N個數字來排隊,兩兩相比小靠前;外層循環N-1,内層循環N-1-i;
如果要降序排序,隻要把程式中的大于号換成小于号就行了;
如://冒泡排序輸出成績
int[] scores=new int[5];
for(int i=0;i<scores.Length-1;i++)
{
for(int j=0;j<scores.Length-1-i;j++)
{
if(scores[j]>scores[j+1])
{
int temp=scores[j];
scores[j]=scores[j+1];
scores[j+1]=temp;
}
//排序後輸出
Console.WriteLine("排序後成績為");
for(int i=0;i<scores.Length;i++)
Console.WriteLine("{0}",scores[i]);
第三章 使用屬性更新MyBank
一、C#中成員的預設通路修飾符是private,類的預設為internal.
二、this關鍵字是指目前對象本身,可以解決成員變量和局部變量名稱沖突問題。
this代表調用方法的對象引用,即誰調用本方法,this就指向哪個對象。this是非靜态的,不能在靜态方法中使用
class Student
private string _name;
public void SetName(string _name)
this._name=_name;
三、用屬性封裝字段
pivate string _name;
public string Name
get{return _name;}
set{_name=value;
屬性通路類型:1.隻讀屬性,隻包含get通路器
2.隻寫屬性,隻包含set通路器
3.讀寫屬性,包含get和set通路器
封裝字段快捷鍵:Ctrl+R,E
C#為類的私有字段和屬性命名會采用不同方法:1.為類的私有字段命名時,要以下劃線“_”開頭,用駝峰法命名
2.為類的屬性命名采用Pascal法,首字母大寫
四、字段和屬性的差別:通常将字段指定為private,在類的内部使用,将屬性指定為public,對外部公開,
通過get或set通路器對字段提供安全,有效範圍的保護。
五、屬性和方法的差別:屬性set通路器和get通路器後不使用(),因為通路器沒有傳回值,是以也不需要指定void.
六、引用傳遞和值傳遞差別:值傳遞是将變量的值複制一份傳遞給方法,使該方法的形參和實參的值相同。在調用的
方法中修改形參也隻是對實參複制品的資料做更新,并沒有真正改變實參的值。
引用傳遞是将要傳遞的對象的引用複制給方法的形參,使得被調用的方法直接對引用對象
進行更改,會影響實參原來的值。在方法定義和方法調用時都要使用ref修飾參數,而且
使用ref修飾的參數必須在調用的方法中指派。
第三章 深入C#的String類
一、常用字元串處理方法P99
二、Format格式化 string name="張三";
int age=23;
string str="姓名{0}年齡{1}";
str=string.Format(str,name,age);
Console.WriteLine(str);
三、數值類型與字元串的轉換
1,。//将字元串轉換成數值類型
int.parse(string str);
double.parse(string str);
float.parse(string str);
2.//數值轉換為字元串用ToString()方法
string str=num.ToString();
3.使用Convert轉換
Convert.ToInt32() 轉換為整形int
Convert.ToSingle()轉換為單精度float
Convert.ToDouble()轉換為雙精度double
Convert.ToString()轉換為字元串類型string
用Convert轉換成int時,進行了四舍五入,而用parse直接将小數點後的值舍棄了。
四、轉換的使用情況
1.隐式轉換:常用于數值型之間,将取值範圍小的數值類型轉換為取值範圍大的數值類型
2.顯示轉換:常用于數值型之間,将取值範圍大的數值類型轉換為取值範圍小的數值類型
3.Parse()方法:将字元串轉換為其他類型
4.Convert類:任何基本類型之間的互相轉換
第八章 用SQL語句操作資料
一、SQL全稱是“結構化查詢語言”(Structured Query Language)
二、SQL中的運算符:1.算數運算符+,-,*,%,/
2.指派運算符=
3.比較運算符=,>,<,<>,>=,<=,!=(非SQL-92标準)
4.邏輯運算符 AND,OR,NOT
三、插入資料
1.插入單行資料
INSERT INTO 表名 (列名) VALUES(值)
INSERT INTO Student(name,age,email) VALUES("張三",23,"[email protected]");
2.一次插入多行資料(提前建好新表)
INSERT INTO Student(姓名,位址,郵箱)
SELECT name,address,email
FROM School
3.将現有表中的資料添加到新表中(查詢時直接建立新表了)
SELECT Student.name,student.email
INTO Adderss
FROM Student
4.用UNION關鍵字合并資料進行插入
INSERT Student(name,email)
SELECT ‘‘,‘‘UNION
SELECT ‘‘,‘‘
最後一行不能加UNION
四、更新資料
UPDATE 表名SET 列名=更新值 WHERE 更新條件
如:UPDATE Student
SET name=‘張三‘ WHERE id=1
五、删除資料
//删除單行資料
DELETE FROM 表名 WHERE 條件
DELETE FROM Student where name=‘張三‘
//删除表中的所有行
TRUCATE TABLE Student
表結構,列,限制,索引不會改變,不能用于有外鍵限制的表,要用DELETE
第九章 資料查詢基礎
一、語句查詢
文法:SELECT 列名
FROM 表名
WHERE 條件
ORDER BY 排序的列名[ASC或DESC]
1.查詢所有資料行和列
SELECT * FROM Student
2.查詢部分列或行
SELECT Scode,name,address
WHERE name=‘張三‘
3.在查詢中使用列的别名
SELECT name AS 學生姓名,email AS 學生郵箱
WHERE adress=‘上海‘
4.查詢空值
SELECT name FROM Student WHERE email is null
5.在查詢中使用常量列
SELECT 姓名=name,位址=address,‘上海一中‘ AS 學校名稱
6查詢傳回限制的行數
SELECT TOP 5 name,email
FROM Student WHERE Sex=0
或
SELECT TOP 20 PERCENT name,email
二、查詢中使用函數P223-P224頁
1.字元串函數
2.日期函數
3.數學函數
4.系統函數
第十章模糊查詢和聚合函數
一、通配符
_一個字元
%任意長度字元串
[]括号中所指定範圍的一個字元[1-5]
[^]不在括号中所指定範圍内的任意一個字元[^1-2]
二、LIKE模糊查詢用于比對字元串或字元串一部分
三、使用BETWEEN在某個範圍内進行查詢
SELECT * FROM Student WHERE Score BETWEEN 60 AND 80
四、使用IN在列舉值内進行查詢
SELECT name,email
FROM Student WHERE address IN(‘北京‘,‘上海‘)
四、SUM()函數
傳回表達式中所有數值的總和
SELECT SUM(Scores) FROM Scores WHERE StudentID=23
五、AVG()函數
傳回表達式中所有數值的平均值,空值将被忽略,隻能用于數字類型的列
六、MAX()函數MIN()函數
傳回表達式中的最大值,MIN()傳回最小值
七、COUNT()函數
傳回提供的組或記錄集中的計數,可以用于除去text,image,ntext以外的任何類型的列
SELECT COUNT (*) FROM Student
聚合函數傳回一個數
第十一章 連接配接查詢和分組查詢
一、使用GROUP BY分組查詢
SELECT COUNT(*) AS人數,Sex FROM Student
GROUP BY Sex
二、使用GROUP BY時,在SELECT 清單中可以指定的列是有限制的,隻允許幾項:
1.被分組的列
2.為每個分組傳回一個值的表達式,如聚合函數計算出的列
三、使用HACING進行分組篩選
WHERE隻能對沒有分組統計前的資料進行篩選,對分組後的條件篩選必須使用HAVING,HAVING用來對分組後
的資料進行篩選,将“組”看做“列”來限定條件
四、HAVING 和 WHERE使用的順序
WHERE---GROUP BY---HAVING
五、GROUP BY後面不能使用别名,HAVING後面也不能使用别名。
ORDER BY 和WHERE可以使用别名
六、内連接配接查詢
有兩種方式:1.在WHERE子句中指定連接配接條件
SELECT a.name,s.id,s.score
FROM student [AS] a,Scores [AS] s
WHERE a.id=s.id
2.在FROM中使用INNER JOIN...ON
SELECT a.name,s.id,s.score
from student [AS] a
INNER JOIN Scores [AS] s ON(a.id=s.id)
WHERE s.Score>=60
3.三表以上
SELECT S.name 學生姓名,CS.CourseName 課程名稱,C.Score 考試成績
FROM Student S
INNER JOIN Score C ON (S.Scode=C.StudentID)
INNER JOIN Course CS ON(CS.CourseID=C.CourseID)
七、外連接配接查詢
兩種方式:1.左外連接配接
SELECT S.name,C.CourseID,C.Score
FROM Student S
LEFT OUTER JOIN Score C ON S.Scode=C.StudentID
2.右外連接配接
SELECT CS.name,C.StudentID,C.Score
FROM Course CS
RIGTH OUTER JOIN Score C ON CS.CoureseID=C.CoureseID
八、内連接配接和外連接配接的不同:
内連接配接查詢的結果是從兩個或兩個以上表的組合中挑選出符合連接配接條件的資料,如果資料無法滿足連接配接條件則将其忽略
在内連接配接中,參與連接配接的表的地位是平等的。
外連接配接查詢中參與連接配接的表有主從之分以主表的每行資料比對從表的資料列,将符合連接配接條件的資料直接傳回到結果集
中;對那些不符合連接配接條件的列,将被填上NULL值(空值)後再傳回到結果集中。
第十四章 使用ADO.NET通路資料庫
一、ADO.NET有一個非常大的優點,當它與資料源斷開連接配接時也可以使用資料。
二、ADO.NET的兩個元件:1).NET Framework 資料提供程式是專門為資料處理及快速地隻進、隻讀通路資料而設計的組
件。使用它可以連接配接資料源、執行指令和檢索結果,直接對資料源進行操作。
2)DataSet是專門為獨立于任何資料源的資料通路而設計的。使用它,可以不必直接和資料源
打交道,大批量的操作資料,也可以将資料綁定在控件上。
三、.NET Framework資料提供程式的四個核心對象
Connection 建立與特定資料源的連接配接
Command 對資料源執行指令
DataReader 從資料源中讀取隻進隻讀的資料流
DataAdapter 用資料源填充DataSet 并解析更新
四、Connetion的屬性和方法
屬性:ConnectionString
方法:Open();打開資料庫連接配接
Close();關閉資料庫連接配接
建立連接配接:sting str="Data Source=伺服器名;Initial Catalog=資料庫名;User ID=使用者名;pwd=密碼";
SqlConnection conn=new SqlConnection(str);
conn.Open();
關閉連接配接:conn.Close();
五、異常處理
try{}
catch{}
快捷鍵:ctrl+K+S
try
conn.Open();
catch(Exception ex)
Console.WriteLine(ex.Message);//Message封裝了錯誤資訊
finally
conn.Close();//無論怎麼樣都會執行的操作
六、用Command 對象執行資料庫的操作
string sql="";//執行的操作
SqlCommand comm=new SqlCommand( sql, conn);
七、Command方法
1.int ExecuteNonQuery()執行不傳回行的語句,如UPDATE 傳回影響的行數
2.SqlDateReader ExecuteReader()或SqlDateReader ExecuteReader(CommandBehavior behavior)
執行查詢指令,傳回DataReader 對象。後者括号裡語句帶便關閉此對象時同時關閉資料庫
3.object ExecuteScalar()傳回單個值,如執行COUNT(*)
第十五章 使用ADO.NET查詢和操作資料
一、StringBuilder 類
常用方法:1)StringBuilder AppendLine(string str)在結尾追加
StringBuilder sb=new SrtingBuilder();
sb.AppendLine("");
sb.ApeendLine("");
...
2)StringBuilder AppendFormat(string format,object arg0,object arg1)添加特定格式字元串
3)StringBuilder Insert(int index,string str)在指定位置插入指定字元串
4)Remove(int starIndex,int length)移除指定字元串
如果要将StringBuilder類對象轉換為String類對象,唯一的方式是用ToString()方法
二、dataReader對象的使用
1.建立Command對象,調用Command對象的ExecuteDataReader()方法,傳回一個DataReader對象,用DataReader對象
的Read()方法讀取一行記錄可以用循環逐條讀取
SqlDataReader reader=comm.ExecuteReader();
while(reader.Read())
Console.WriteLine("{0}\t{1}\t{2}\t",reader["id"],reader["name"],reader["email"]);