1、使用Visual Studio 2013创建新项目

2、创建一个主窗体和4个子窗体

3、创建一个数据库、一个表、一个存储过程

4、在配置文件里添加数据库连接字符串

5、真正的编码工作。


第一步:创建新项目,一张图片抵一万字!看图说话,呵呵。。

第二步:创建4个子窗体,名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、formXMLRead.cs。

三、创建一个数据库、一个表、一个存储过程。打开MS SQL Server Management Studio执行下面的全部语句。

 CREATE DATABASE TestDB
GO
USE TestDB
GO
CREATE TABLE Student
(
SID INT IDENTITY(, )
NOT NULL ,
SName NVARCHAR() NOT NULL ,
Sex NVARCHAR() NOT NULL ,
Area NVARCHAR() NOT NULL ,
Email NVARCHAR() NOT NULL
)
ON [PRIMARY]
GO
INSERT INTO dbo.Student
( SName, Sex, Area, Email )
VALUES ( N'风花雪月', N'男', N'北京', N'abc@qq.com' ),
( N'泡椒田鸡', N'女', N'上海', N'abcd@qq.com' ),
( N'红灯酒绿', N'男', N'天津', N'abc@qq.com' );
GO
CREATE PROCEDURE getStudents @p_SID INT
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS ( SELECT SID
FROM dbo.Student
WHERE SID = @p_SID )
PRINT 'The student does not exists.'
ELSE
SELECT SID ,
SName ,
Sex ,
Area ,
Email
FROM dbo.Student
WHERE SID = @p_SID
END
GO
--测试--
--EXEC dbo.getStudents @p_SID = -- int
--> 泡椒田鸡 女 上海 abcd@qq.com

四、在程序配置文件中添加数据库连接字符串,这里是Windows集成,所以没有看到用户名和密码的属性。添加完后,在代码里就可以通过TestDBConnectionString这个字符串连接数据库了!

五、开始设计窗体和写代码(这些步骤比较繁琐,所以再细分几个步骤,这样比较清晰)

5.1)设计主窗体

1.在创建新项目的时候,系统会默认创建一个名为Form1.cs的主窗体,现在把它更名为FormMain.cs
     
2.在工具栏拖动MenuStrip控件到主窗体,主菜单横向有3项,分别是:存储过程、XML、退出。存储过程包括:使用Command 和 使用DataAdapter; XML包括:创建XML和读取XML; 具体设置参照下表:

(Name)属性 Text属性 单击事件处理程序  
procedureToolStripMenuItem 存储过程  
useCommandToolStripMenuItem  使用Command useCommandToolStripMenuItem_Click  
useDataAdapterToolStripMenuItem 使用DataAdapter useDataAdapterToolStripMenuItem_Click  
xmlToolStripMenuItem XML  
createXMLToolStripMenuItem 创建XML createXMLToolStripMenuItem_Click  
readXMLToolStripMenuItem  读取XML  readXMLToolStripMenuItem_Click  
exitToolStripMenuItem 退出 exitToolStripMenuItem_Click  
       

3.选中主窗体,在属性窗口修改IsMdiContainer为True,这样就把这个普通的窗体变成了父窗体。如图:

      4.添加4个事件的处理程序和一个退出程序事件,程序的功能是实例化4个窗体,并指定自己的父窗体,代码没什么可讲的,都一个德行。

 private void useCommandToolStripMenuItem_Click(object sender, EventArgs e)
{
formCommandProc form = new formCommandProc();
form.MdiParent = this;
form.Show();
} private void useDataAdapterToolStripMenuItem_Click(object sender, EventArgs e)
{
formDataAdapterProc form = new formDataAdapterProc();
form.MdiParent = this;
form.Show();
} private void createXMLToolStripMenuItem_Click(object sender, EventArgs e)
{
formXMLCreate form = new formXMLCreate();
form.MdiParent = this;
form.Show();
} private void readXMLToolStripMenuItem_Click(object sender, EventArgs e)
{
formXMLRead form = new formXMLRead();
form.MdiParent = this;
form.Show();
} private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}

到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图:

5.接下来就是要设计子窗体的样式和功能了。

打开formCommandProc设计模式界面,安照下表属性添加相关控件:

(Name)属性 Text属性 控件类型  单击事件
formCommandProc 使用Command对象执行存储过程 System.Windows.Forms.Form
 label1  学号: System.Windows.Forms.Label  无
 tbxSID  无 System.Windows.Forms.TextBox  
 btnGet  查找 System.Windows.Forms.Button  btnGet_Click
 tbxGetStudent  无(Multiline属性为True)表示多行 System.Windows.Forms.TextBox  

按钮单击事件处理程序btnGet_Click:我把整个文件的代码都放上来了,重点是按钮点击事件!

 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;
using System.Data.SqlClient; namespace Procedure
{
public partial class formCommandProc : Form
{
public formCommandProc()
{
InitializeComponent();
} private void btnGet_Click(object sender, EventArgs e)
{
try
{
//接受到的学号文本类型转换为整型int
Convert.ToInt32(tbxSID.Text);
}
catch
{
tbxGetStudent.Text += "The student ID does not exists.";
tbxGetStudent.Text += "\r\n";
return;
} //这句要引用System.Configuration.dll
string strConnect = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ToString();
//这句需要添加 using System.Data.SqlClient;
SqlConnection objConnect = new SqlConnection(strConnect); SqlCommand objCommand = new SqlCommand("getStudents", objConnect);
objCommand.Parameters.Add("@p_SID", SqlDbType.Int);
objCommand.Parameters["@p_SID"].Value = tbxSID.Text;
objCommand.CommandType = CommandType.StoredProcedure;
try
{
if (objConnect.State == ConnectionState.Closed)
{
objConnect.Open();
}
SqlDataReader objDataReader = objCommand.ExecuteReader();
if (objDataReader.HasRows ==false)
{
tbxGetStudent.Text += "The student does not exists.";
tbxGetStudent.Text += "\r\n";
}
else
{
while (objDataReader.Read())
{
tbxGetStudent.Text += objDataReader.GetValue().ToString() + "\t";
tbxGetStudent.Text += objDataReader.GetValue().ToString() + "\t";
tbxGetStudent.Text += objDataReader.GetValue().ToString() + "\t";
tbxGetStudent.Text += objDataReader.GetValue().ToString() + "\t";
tbxGetStudent.Text += "\r\n";
}
}
objDataReader.Close();
}
catch(Exception exp)
{
tbxGetStudent.Text += exp.Message;
tbxGetStudent.Text += "\r\n";
}
finally
{
if(objConnect.State == ConnectionState.Open)
{
objConnect.Close();
}
} }
}
}

现在试运行一下程序,应该可以从数据库里读取数据了!

明天再写吧。。

桌面程序开发入门(WinForm with C#)的更多相关文章

  1. 微信小程序开发入门教程

    做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...

  2. scala程序开发入门

    scala程序开发入门,快速步入scala的门槛: 1.Scala的特性: A.纯粹面向对象(没有基本类型,只有对象类型).Scala的安装与JDK相同,只需要解压之后配置环境变量即可:B.Scala ...

  3. 用python进行桌面程序开发

    Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...

  4. 微信小程序开发入门(一)

     小程序学习入门--(一) 最近自己学习微信小程序的过程当中自己总结出来的知识点,我会不断地更新和完善! 小程序的开发工具 一台电脑 熟悉HTML.CSS.JS基本语法 开发工具: 微信web开发者工 ...

  5. 微信小程序开发入门与实践

    基础知识---- MINA 框架 为方便微信小程序开发,微信为小程序提供了 MINA 框架,这套框架集成了大量的原生组件以及 API.通过这套框架,我们可以方便快捷的完成相关的小程序开发工作. MIN ...

  6. 微信小程序-开发入门

    微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业务放到微信平台上,以免受制于腾讯,不过就小程序的应用场景(用完即走和二维码分发等)还是很值 ...

  7. 微信小程序开发入门篇

    本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果. 开发准备工作 获取微信小程序的 AppID 登录 https://mp.weixin.qq.com ,就可以在网站的& ...

  8. 微信小程序开发入门:10分钟从0开始写一个hello-world

    小程序开发需要三个描述整体程序的app文件 和 一个描述多个页面的 pages文件夹. (1)三个app文件分别是app.js,app.json,app.wxss. app.js文件是脚本文件处理一些 ...

  9. 程序开发入门工具之CodeBlocks

    程序开发基础工具之CodeBlocks 作为程序开发工作者,我们会接触很多的程序开发软件:但实用以及容易掌握的程序开发软件对于初学者的学习能力是有一定的加成的.今天我就作为一个程序开发者给大家推荐一个 ...

随机推荐

  1. hdu 5045 N个人做M道题的正确率

    http://acm.hdu.edu.cn/showproblem.php?pid=5045 给出N个人做M道题的正确率,每道题只能由一个人做出,并且当所有人都做出来且仅做出一道题时,做过题的人才可以 ...

  2. Ansible之ansible-playbook roles

    刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会希望这些文件是可以方便去重用的,所以需要重新去组织这些文件. 基本上,使用 include 语句引用 ...

  3. System.Windows.Freezable 在未被引用的程序集中定义

    System.Windows.Freezable 在未被引用的程序集中定义 解决方法 添加windowsbase.dll 引用

  4. [Openwrt 项目开发笔记]:PHP+Nginx安装(七)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们已经搭建了MySQL数据库了,因 ...

  5. Angular6 学习笔记——组件详解之组件通讯

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  6. 使用Git上传代码到远程仓库

    1.进入文件夹,cd f:/test/ 2.初始化远程仓库,git init 3.添加代码,git add . (注意add后面的点前面有一个空格) 4.提交代码到远程仓库,git commit -m ...

  7. 记录JavaScript中使用keyup事件做输入验证(附event.keyCode表)

    input的blur事件 $("#input-name").blur(function () { var value = $(this).val(); if (value === ...

  8. Exp6 信息搜集与漏洞扫描 20164323段钊阳

    20164323 Exp6 信息搜集与漏洞扫描 回答问题 1.哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理.全球一共 ...

  9. A Tool to Clip Images

    using Microsoft.Win32; using System; using System.IO; using System.Text.RegularExpressions; using Sy ...

  10. create session 参数介绍

    Create Session alias, url, headers={}, cookies=None, auth=None, timeout=None, proxies=None, verify=F ...