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. POJ1269求两个直线的关系平行,重合,相交

    依旧是叉积的应用 判定重合:也就是判断给定的点是否共线的问题——叉积为0 if(!cross(p1,p2,p3) && !cross(p1,p2,p4))printf("LI ...

  2. Pywinauto 基于Win32 程序的自动化功能测试工具

    1.  前提条件 ü  Python2.6 下载地址:http://ishare.iask.sina.com.cn/f/8173206.html ü  Pywinauto-0.4.1 下载地址:htt ...

  3. spring mvc 注解@Controller @RequestMapping @Resource的详细例子

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  4. C#——调用C++的DLL 数据类型转换

    /C++中的DLL函数原型为        //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsig ...

  5. DropDownList切换选择,服务器控件Repeater未更新

    将EnableViewState属性设置为false,这样禁止服务器控件使用视图状态,也就是禁止发送给浏览器HEML中的缓存副本, 每次都会使用新数据. 一旦页面的控件很多,频繁的传递控件状态值对网络 ...

  6. List泛型集合对象排序

    本文的重点主要是解决:List<T>对象集合的排序功能. 一.List<T>.Sort 方法 () MSDN对这个无参Sort()方法的介绍:使用默认比较器对整个List< ...

  7. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)

    目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...

  8. powerviot install in sharepoint 2013

    1.在app server安装powerviot for sharepoint,然后进行配置powerviot 2.powerviot配置之前需要设置security token service以及e ...

  9. 使用hex编码绕过主机卫士IIS版本继续注入

    本文作者:非主流 测试文件的源码如下: 我们先直接加上单引号试试: http://192.168.0.20/conn.asp?id=1%27 很好,没有报错.那我们继续,and 1=1 和and 1= ...

  10. net.sf.json.JSONOBJECT.fromObject 与 com.alibaba.fastjson.JSONObject.parseObject

    文章待补充,先写写以下知识点好了. NULL值处理之 net.sf.json.JSONObject 和 com.alibaba.fastjson.JSONObject区别 JSON作为一个轻量级的文本 ...