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 [email protected]";
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 [email protected] where StationName [email protected]";
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分别表示行和列

时间: 2024-11-09 11:18:29

C# winform 程序开发知识点总结(干货)的相关文章

WinForm程序开发

WinForm程序开发------------------------------主要页面----------------------------------BaseForm.cs    基类,用于派生子窗口    Login.cs    登录,用于登录窗口 MainForm.cs    主页,系统主页 LoginOut.cs    注销,用于登录注销窗口 Page        文件夹,其他创业所在的目录 ------------------------------入口程序-----

winForm 程序开发界面参数传递

1. [csharp] view plaincopy using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace

WinForm界面开发之布局控件&quot;WeifenLuo.WinFormsUI.Docking&quot;的使用

http://www.cnblogs.com/wuhuacong/archive/2009/07/09/1520082.html 本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking". 布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的.先看看控件使用

桌面程序开发入门(WinForm with C#)

1.使用Visual Studio 2013创建新项目 2.创建一个主窗体和4个子窗体 3.创建一个数据库.一个表.一个存储过程 4.在配置文件里添加数据库连接字符串 5.真正的编码工作. 第一步:创建新项目,一张图片抵一万字!看图说话,呵呵.. 第二步:创建4个子窗体,名称分别是formCommandProc.cs.formDataAdapterProc.cs.formXMLCreate.cs.formXMLRead.cs. 三.创建一个数据库.一个表.一个存储过程.打开MS SQL Serv

小程序开发的40个技术窍门,纯干货!

微信“小程序”正式上线一周时间,相关话题持续升温.支付宝开发“小程序”的消息也随即曝出,互联网巨头们摩拳擦掌,不少网友调侃说,这势头感觉要挑战现有的“APP帝国”了.那么,面对如此炙手可热的小程序,WeX5移动开发云也没有闲着,经过全网搜索,为大家筛选出一条小程序开发者的必读文章,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考! Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,

基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)

本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客户端应用程序的设计与开发. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(1:概述)

使用efwplusScript开发Winform程序【像小程序那样开发PC软件】

一.前言 本人从事多年医疗管理软件的开发,在医院大多数的软件都还是CS程序,BS程序很少,对于使用者来说CS的操作体验确实比BS的要好. 1.CS的缺点就是升级麻烦,每次有新版本都需要所有客户端操作升级.有没有办法像BS程序那样刷新一下页面就是最新程序? 2.还有就是企业软件项目个性化需求都特别多,特别是界面上的每一个项目可能要求都不太一样,比如表单录入一个项目一个版本是很正常的现象,那有没有办法把界面层的开发单独出来,采用配置的方式了? 3.另外就是现在的开发模式,如果在现场修改问题太麻烦了,

winform开发 总结1&gt;winform程序使用线程的必要性,以及正确的使用方式

winform程序中使用线程的必要性: 单线程操作在执行耗时任务时会造成界面假死,带来非常差劲的用户体验,有时候甚至会影响到正常的业务执行,使用多线程做相关操作实属不得已之举. 那么在编写程序之前必须要明白的一个点就是窗体的UI的操作只能通过UI线程来执行,其他线程如果要去执行窗体中的控件值修改或者其它[任何和窗体线程相关的操作],就会报异常,所有人都知道的.为了适应这一特性,于是就有了这样的写法: private void button1_Click(object sender, EventA

**iOS开发系列--IOS程序开发概览

http://www.cnblogs.com/kenshincui/p/3890880.html 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人担忧,所以还是希望大家能够熟练掌握前面的内容,开发过程中多思考,彻底理解程序运行的原理