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. How To Change the Supplier Bank Account Masking in UI (Doc ID 877074.1)

      Give Feedback...           How To Change the Supplier Bank Account Masking in UI (Doc ID 877074.1) ...

  2. Android-Java-Thread的使用

    main线程跑三个任务: package android.java.thread2; class Demo { private String name; public Demo(String name ...

  3. 【TypeScript】TypeScript 学习 5——方法

    在 JavaScript 中,有两种方式定义方法. 1.命名的方法 function add(x,y){ return x+y; } 2.匿名方法 var myAdd = function(x,y) ...

  4. oracle只导出触发器

    只要触发器,其他都不要 方法1:plsql develop调用exp:tools->export object—>trigger 方法2:select dbms_metadata.get_ ...

  5. .NET在IE10下的回传BUG修复

    以前我也没注意到,直到有次公司新配了台机器做测试服务器,在测试过程中意外发现凡是涉及PostBack的操作仅在IE10下都无效,其他版本浏览器都没有问题,本机调试也没有问题. 这也就是说在程序相同的情 ...

  6. IIS发布网站之后,页面图片和js未加载出错

    [IIS相关]mvc做的web发布之后,运行之后界面上的图片和js都没有加载出来.      解决方案:安装IIS的时候需要勾选ASP选项,否则会出现这种情况. 如果项目是用.Netframework ...

  7. MongoDB的下载、安装与部署方法

    1.什么是MongoDB? 它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性.可伸缩性.扩展性于一身的高性能的面向文档的通用数据库. 2.为什么要用Mong ...

  8. 关于ubuntu下看视频中文字幕乱码的问题

    试了几个播放器都不行.....然后把字幕文件打开后重新保存成utf-8的.... 可以了!!!! 天呐改编码真是一个万能的办法~ 随手记

  9. 国际化SEO优化的最佳实践

    作者:Kristopher Jones 翻译 :吴祺深 欢迎访问网易云社区,了解更多网易技术产品运营经验. 让我们来说一下hreflang属性.如果你还没有关掉这个页面,那么你已经完成了这个教程最重要 ...

  10. 字符串搜索 find()

    参考 <C++ Primer Plus>中文版 P870 #include <map> #include <fstream> #include <iostre ...