C# winform 程序開發知識點總結(幹貨)
1、數據庫連接及操作
在說數據庫操作之前,先說一下數據庫連接操作字符串的獲取
首先,點擊服務器資源管理器,接下來選中數據連接右鍵點擊添加連接,填入你要連接的服務器名稱,點擊單選框使用SQL Server 身份驗證,填入用戶名和密碼,然後選擇你要鏈接的數據庫名稱,點擊測試連接,彈出連接成功,然後點擊確定,此時,數據庫已經連接成功。在服務器資源管理器下的數據連接下就可以看到你剛才鏈接的數據庫,選中右鍵屬性你就可以看見連接字符串
在獲取到數據庫連接字符串時,在App.config配置文件中可以寫關於連接數據庫的連接字符串,在這裏配置好,在程序中直接通過代碼調用連接字符串就行,直接上代碼
1 <connectionStrings> 2 <add name="connStr" connectionString="Data Source=(local);Initial Catalog=train;User ID=sa;Password=1234" /> 3 <add name="train.Properties.Settings.trainConnectionString" connectionString="Data Source=(local);Initial Catalog=train;Persist Security Info=True;User ID=sa" 4 providerName="System.Data.SqlClient" /> 5 </connectionStrings>
在數據庫連接時通過獲取App.confi文件中的連接字符串連接數據庫,代碼如下
/// <summary> /// 數據庫連接 /// </summary> public class SqlConnect { /// <summary> /// 連接字符串獲取 /// </summary> private static string connectString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; /// <summary> /// 建立數據庫連接 /// </summary> /// <returns></returns> public static SqlConnection getConn() { SqlConnection con = new SqlConnection(connectString); //Console.WriteLine("連接成功"); return con; } }
接下來說一說數據庫增刪查改相關的操作
通過c#操作數據庫增加一條數據和java的思路邏輯差不多,只不過在在傳值賦值的過程中采用的方式不一樣,Java中sql語句用問號賦值傳值,而c#是通過@加變量名傳值,通過
AddWithValue方法賦值。是不是聽得雲裏霧裏的,給大家附上一段代碼,就可以懂我說的
1 /// <summary> 2 /// 插入站點 3 /// </summary> 4 /// <param name="stationName"></param>站點名稱 5 /// <param name="stationEnName"></param>站點英文名 6 /// <param name="stationLng"></param>站點經度 7 /// <param name="stationLat"></param>站點緯度 8 /// <param name="stopTime"></param>停留時間 9 /// <param name="distance"></param>距離 10 /// <param name="lastStation"></param>上一站點名稱 11 /// <param name="belongStation"></param>在本線路中的隸屬站次 12 public void insertStation(String stationName, String stationEnName, double stationLng, double stationLat, int stopTime, double distance, String lastStation,int belongStation) 13 { 14 SqlConnection con = SqlConnect.getConn(); 15 try 16 { 17 String InsertStr = "insert into WorkingLine (StationName,StationEnName,StationLng,StationLat,StationStopTime,StationDistance,LastStationName,SubjectStation) values (@STATIONNAME,@STATIONENNAME,@STATIONLNG,@STATIONLAT,@STATIONSTOPTIME,@STATIONDISTANCE,@LASTSTATIONNAME,@SUBJECTSTATION)"; 18 SqlCommand command = con.CreateCommand();// 綁定SqlConnection對象 19 command.CommandText = InsertStr; 20 con.Open(); 21 command.Parameters.AddWithValue("@STATIONNAME", stationName); 22 command.Parameters.AddWithValue("@STATIONENNAME", stationEnName); ; 23 command.Parameters.AddWithValue("@STATIONLNG", stationLng); 24 command.Parameters.AddWithValue("@STATIONLAT", stationLat); 25 command.Parameters.AddWithValue("@STATIONSTOPTIME", stopTime); 26 command.Parameters.AddWithValue("@STATIONDISTANCE", distance); 27 command.Parameters.AddWithValue("@LASTSTATIONNAME", lastStation); 28 command.Parameters.AddWithValue("@SUBJECTSTATION", belongStation); 29 command.ExecuteNonQuery(); 30 } 31 catch (Exception ex) 32 { 33 Console.WriteLine(ex.Message); 34 Console.WriteLine("添加站點失敗"); 35 } 36 finally 37 { 38 con.Close(); 39 } 40 }
刪除,修改一條數據相對來說沒有那麽復雜,直接上代碼
1 /// <summary> 2 /// 刪除站點 3 /// </summary> 4 /// <param name="name"></param>站點名稱 5 public void deleteSta(String name) { 6 SqlConnection con = SqlConnect.getConn(); 7 try 8 { 9 String deleteStr = "delete from WorkingLine where StationName=@STATIONNAME"; 10 SqlCommand command = con.CreateCommand();// 綁定SqlConnection對象 11 command.CommandText = deleteStr; 12 con.Open(); 13 command.Parameters.AddWithValue("@STATIONNAME", name); 14 command.ExecuteNonQuery(); 15 } 16 catch (Exception ex) 17 { 18 Console.WriteLine(ex.Message); 19 Console.WriteLine("刪除站點失敗"); 20 } 21 finally 22 { 23 con.Close(); 24 } 25 } 26 27 /// <summary> 28 /// 修改某一站距上一站的距離 29 /// </summary> 30 /// <param name="stationname"></param>站名 31 /// <param name="distance"></param>距離 32 public void UpdateDistance(String stationname,double distance) { 33 SqlConnection con = SqlConnect.getConn(); 34 try 35 { 36 String updateDisStr = "update WorkingLine set StationDistance =@DISTANCE where StationName =@STATIONNAME"; 37 SqlCommand commmand = con.CreateCommand();// 綁定SqlConnection對象 38 commmand.CommandText = updateDisStr; 39 commmand.Parameters.AddWithValue("@DISTANCE", distance); 40 commmand.Parameters.AddWithValue("@STATIONNAME", stationname); 41 con.Open(); 42 commmand.ExecuteNonQuery();//執行命令 43 44 } 45 catch (Exception ex) 46 { 47 Console.WriteLine(ex.Message); 48 Console.WriteLine("修改距離失敗"); 49 } 50 finally 51 { 52 con.Close(); 53 } 54 }
對於查詢數據來說,我們普遍的操作就是用泛型List<E>來接收查詢的數據,看代碼就明白了
1 /// <summary> 2 /// 查詢列車運行線路信息,為DateGridView綁定數據源 3 /// </summary> 4 /// <returns></returns> 5 public List<DateView> SelectGridViewStation() 6 { 7 SqlDataReader reader = null; 8 DateView view = null; 9 List<DateView> list = new List<DateView>(); 10 SqlConnection con = SqlConnect.getConn(); 11 try 12 { 13 String selectGVStr = "select StationName,StationEnName,StationStopTime,StationLng,StationLat,StationDistance from WorkingLine order by SubjectStation asc"; 14 SqlCommand command = con.CreateCommand();// 綁定SqlConnection對象 15 command.CommandText = selectGVStr; 16 con.Open(); 17 reader = command.ExecuteReader(); 18 while (reader.Read()) 19 { 20 view = new DateView() 21 { 22 StationName = reader.GetString(0), 23 StationEnName = reader.GetString(1), 24 stopTime=reader.GetInt32(2), 25 lng=reader.GetDouble(3), 26 lat = reader.GetDouble(4), 27 distance=reader.GetDouble(5) 28 }; 29 list.Add(view); 30 } 31 } 32 catch (Exception ex) 33 { 34 Console.WriteLine(ex.Message); 35 Console.WriteLine("查詢線路信息失敗"); 36 } 37 finally 38 { 39 reader.Close(); 40 con.Close(); 41 } 42 return list; 43 }
現在拿到數據了,我們怎麽顯示在對應的界面上呢!在winfrom窗體程序中,我習慣了用DataGridView控件,只需要為其綁定數據源就好了,我說的數據源是通過代碼去實現的,請看
1 SelectStation selSta = new SelectStation(); 2 listDV = selSta.SelectGridViewStation(); 3 dataGridView1.DataSource = listDV;2、DataGridView操作
DataGridView控件默認選中第一行數據,如果不想讓其選中,只需一步:dataGridView1.Rows[1].Selected = false;
選取DataGridView控件中某一行某一列的值:dataGridView1.Rows[m ].Cells[n].Value.ToString();其中m,n分別表示行和列
C# winform 程序開發知識點總結(幹貨)