当前位置:文档之家› C# winform存储过程应用

C# winform存储过程应用

C# winform存储过程应用
C# winform存储过程应用

以前习惯在代码中直接上sql语句,听说过存储过程。但是一直没怎么用过。最近尝试用了一下,感觉不错,起码代码中简单了不少;

不带参数的应用:

以删除数据库中数据为例:

表名:p1

各字段(类型):name (char(10)) age (int) sex (char) No(int)

应用1:删除表中序号(No)最大的那条记录

存储过程:

CREATE PROCEDURE p_deleteMessage_p1

AS

begin

delete from p1

where N0=(select MAX(N0)from p1)

end

程序中调用存储过程:

Private bool delete_Max_No_Record()

{

string sql_text="p_deleteMessage_p1";

try

{

cmd = new SqlCommand();

cmd.Connection = sqlconn;

https://www.doczj.com/doc/8a5256695.html,mandType = CommandType.StoredProcedure;

https://www.doczj.com/doc/8a5256695.html,mandText = sql_text;

cmd.ExecuteNonQuery();

return true;

}

catch

{ return false; }

}

带参数的应用,并且返回影响的行数:

以删除数据库中数据为例:

表名:p1

各字段(类型):name (char(10)) age (int) sex (char) No(int)

应用1:删除表中序号(No)小于某个值的所有记录:

存储过程代码:

CREATE PROCEDURE p_deleteMessage_p1_parameter

@no int,

@count int output

AS

BEGIN

SET NOCOUNT ON;

delete from p1

where N0<=@no;

set@count=@@ROWCOUNT

END

在代码中调用存储过程:

private bool deleteRecord(int No)

{

bool result = false;

string sql_text = "p_deleteMessage_p1_parameter";

try

{

cmd = new SqlCommand();

cmd.Connection = sqlconn;

https://www.doczj.com/doc/8a5256695.html,mandType = CommandType.StoredProcedure;

https://www.doczj.com/doc/8a5256695.html,mandText = sql_text;

SqlParameter pa1 = new SqlParameter("@no", No);

SqlParameter pa2 = new SqlParameter("@count",SqlDbType.Int);

cmd.Parameters.Add(pa1);

cmd.Parameters.Add(pa2);

cmd.Parameters["@count"].Direction = ParameterDirection.Output; cmd.ExecuteNonQuery();

int count =(int)cmd.Parameters["@count"].Value;

if (count > 0)

{ result = true;}

}

catch

{ return false; }

return result;

}

C# WinForm自定义控件开发实例

C# WinForm自定义控件开发实例 最近做一个图象的采集,需要一个图形的选择控件,但是在.net下没有类似vb中的shape控件,所以考虑了自己写一个控件。下面我将从头创建控件,这个控件主要是用来选择图形的Rectangle,有一下几个属性Color BorderColor:边框颜色,Color BackColor:背景颜色,bool ReSizeble:是否可移动,Rectangle SelectRectangle:选择区域。 打开vs2003(我用的这个版本),新建一个c#控件库,ok,拷贝如下代码到你的代码里。using System;using System.Collections;using https://www.doczj.com/doc/8a5256695.html,ponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace WindowsExtendedControls{ /// /// 控件/// public class ShapeEx : System.Windows.Forms.Control { /// /// 必需的设计器变量。/// /// private Color _BorderColor=new Color(); private Color _BackColor=new Color(); private bool _ReSizeble; private Point _SelfLocation=new Point(); private Point _MouseLocation=new Point(); private int _SelfWidth; private int _SelfHeight; private int _SelectSelctedIndex;//0-8,0:SizeAll private Rectangle

存储过程的典型例子

可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。 QUOTE: SQL SERVER 联机丛书中的定义: 存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。 可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。 也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。 要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。 下面我们来看一下存储过程的建立和使用方法。 一、创建存储过程 和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是: QUOTE: CREATE PROC 存储过程名称 [参数列表(多个以“,”分隔)] AS SQL 语句 例: QUOTE: CREATE PROC upGetUserName @intUserId INT, @ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数 AS BEGIN -- 将uName的值赋给 @ostrUserName 变量,即要输出的参数 SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId END 其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,

桌面软件测试概述

桌面软件: 桌面软件是一类用于更改桌面视觉效果或管理桌面设置的软甲、以及一些使电脑用起来更加方便的软件 ?桌面管理工具: 可以管理工具、可以管理操作系统桌面图标、文件、网址 ?桌面应用软件 ●浏览器 ●输入法 ●音乐盒 桌面软件测试计划 ?测试计划的测试策略 ●功能测试 检查功能项下面还有的若干项 ●性能测评 保证机器配置相同、操作步骤相同: 如打开100页签、浏览网页是否流畅 在浏览器上下载文件的速度如何 网页显示的速度、观看视频、浏览新闻、网络购物的速度如何 ●稳定性测试 稳定性测试指在一定环境下,长期运行该软件、软件不会失效,不会使计算机造成内存泄露的测试 自动化工具:AutoIt ●冲突测试 冲突测试:主要指桌面软件在安装过程中或者网络请求过程中,与防火墙、各种杀毒软件和上网助手之间是否有冲突测试。 在冲突测试里需要列出桌面软件有哪些网络请求进程、然后安装所有流行杀毒软件和防火墙进行这方面测试 ●兼容性测试 桌面软件的兼容性测试主要指桌面软件与安装在计算机上的各种个人软件、游戏同时运行时是否会兼容

测试计划的人员安排和任务安排?总体任务工期安排 结论: 性能测评、兼容性测试、稳定性测试、冲突测试一般安排在第二轮测试 用例设计占据了大部分的时间 ?人员和任务安排 冲突测试:测试人员要求对硬件和网络有所了解 兼容性测试:测试人员要求对软件应用较全面 错误类型 ?稳定性问题 应用程序造成操作系统重新启动 应用程序造成操作系统蓝屏 应用程序造成电脑死机或者不能关机 应用程序造成无法进入操作系 应用程序造出现崩溃

?性能问题 系统资源消耗严重、操作系统性能下降 网络Socket被完全占用 应用程序在使用过程存在内存泄露 应用程序在使用过程中性能低下 应用程序在使用过程中出现假死现象 应用程序的性能与同类软件有明显的不同 应用程序的性能与以往版本有明显的不同 Socke用于基于TCP/IP协议的应用程序之间的相互通信 客户方和服务器方需要采用Socket通信时、首先需要建立Socket连接 客户方发送的消息可以是文本,也可以是二进制流 反复断开下载导致无法正常连上网、这个缺陷就是网络Socket被完全占用 ?功能错误 处理流程、逻辑出现错误 功能设计不完整、大量设计和需求不符合 被测软件破坏了操作系统原来定义的权限 容错处理不完善 数据丢失 数据紊乱 案例分析:某些软件限制只能在管理员用户下安装、升级、卸载软件。如:MyQQ 在Windows XP的User权限下出发升级、提示升级失败、这个缺陷是破坏了操作系统原来定义的权限、因为不应该提示信息错误、应该非管理员用户不能升级 ?界面错误 应用程序贴图、控制显示不正确 界面出现错字、排列不整齐 对话框过小、提示信息不能完整显示 桌面软件的测试功能 熟悉了Web系统、C/S结构的系统的测试人员会习惯将菜单作为自己的测试功能模块。如:Word、可将文件、编辑、视图、插入、格式等作为它的测试功

C#调用存储过程简单完整例子讲解

C#调用存储过程简单完整例子https://www.doczj.com/doc/8a5256695.html,/itblog/article/details/752869 创建存储过程 Create Proc dbo.存储过程名 存储过程参数 AS 执行语句 RETURN 执行存储过程 GO DECLARE @iRet INT, @PKDisp VARCHAR(20) SET @iRet = '1' Select @iRet = CASE WHEN @PKDisp = '一' THEN 1 WHEN @PKDisp = '二' THEN 2 WHEN @PKDisp = '三' THEN 3 WHEN @PKDisp = '四' THEN 4 WHEN @PKDisp = '五' THEN 5 ELSE 100 END DECLARE @i INT SET @i = 1 WHILE @i<10 BEGIN set @i=@i+1 PRINT @i END DECLARE @d INT set @d = 1 IF @d = 1 BEGIN -- 打印 PRINT '正确' END ELSE BEGIN PRINT '错误' END

CREATE PROC P_TEST @Name VARCHAR(20), @Rowcount INT OUTPUT AS BEGIN SELECT * FROM T_Customer WHERE NAME=@Name SET @Rowcount=@@ROWCOUNT END GO ---------------------------------------------------------------------------------------- --存储过程调用如下: ---------------------------------------------------------------------------------------- DECLARE @i INT EXEC P_TEST 'A',@i OUTPUT SELECT @i --结果 /* Name Address Tel ---------- ---------- -------------------- A Address Telphone (所影响的行数为 1 行) ----------- 1 (所影响的行数为 1 行) */ ---------------------------------------------------------------------------------------- --DotNet 部分(C#) --WebConfig 文件: ---------------------------------------------------------------------------------------- ......

SQL一个存储过程调用另一个存储过程 获取返回值问题

2008-12-16 21:41 第一种方法: 使用output参数 USE AdventureWorks; GO IF OBJECT_ID ( 'https://www.doczj.com/doc/8a5256695.html,p_GetList', 'P' ) IS NOT NULL DROP PROCEDURE https://www.doczj.com/doc/8a5256695.html,p_GetList; GO CREATE PROCEDURE https://www.doczj.com/doc/8a5256695.html,p_GetList @product varchar(40) , @maxprice money , @compareprice money OUTPUT , @listprice money OUT AS SELECT https://www.doczj.com/doc/8a5256695.html, AS Product, p.ListPrice AS'List Price' FROM Production.Product p JOIN Production.ProductSubcategory s ON p.ProductSubcategoryID = s.ProductSubcategoryID WHERE https://www.doczj.com/doc/8a5256695.html, LIKE@product AND p.ListPrice <@maxprice; -- Populate the output variable @listprice. SET@listprice= (SELECT MAX(p.ListPrice) FROM Production.Product p JOIN Production.ProductSubcategory s ON p.ProductSubcategoryID = s.ProductSubcategoryID WHERE https://www.doczj.com/doc/8a5256695.html, LIKE@product AND p.ListPrice <@maxprice); -- Populate the output variable @compareprice. SET@compareprice=@maxprice; GO 另一个存储过程调用的时候: Create Proc Test as DECLARE@compareprice money, @cost money EXECUTE https://www.doczj.com/doc/8a5256695.html,p_GetList '%Bikes%', 700, @compareprice OUT, @cost OUTPUT IF@cost<=@compareprice BEGIN PRINT'These products can be purchased for less than $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.' END ELSE PRINT'The prices for all products in this category exceed $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'

PB中调用存储过程

PB中调用存储过程 2010-03-09 14:33 PB中调用存储过程 PB技术 2009-11-13 10:35:55 阅读78 评论0 字号:大中小 ⑴ DECLARE ProcedureName PROCEDURE FOR StoredProcedureName @Param1=Value1, @Param2=Value2,... {USING TransactionObject} ; 注意:ProcedureName为PB中的变量,StoredProcedureName为数据库中的存储过程名,Param 为数据库存储过程参数名,Value为PB中的变量。 ⑵ EXECUTE ProcedureName ; ⑶ FETCH Procedure INTO HostVariableList ; ⑷ CLOSE ProcedureName ; 例子: DATETIME ldt_cdt DECLARE getdate PROCEDURE FOR p_get_date; EXECUTE getdate; FETCH getdate INTO :ldt_cdt; CLOSE getdate; RETURN ldt_cdt //THE END 如果存储过程有返回值,则需要使用动态SQL语句,利用SQLSA,SQLDA : 之类的全局变量。你可以用关键字“Dynamic SQL”来查找帮助。 通过测试发现,在PB中调用存储过程跟数据库的连接方式有关系,在此测试了通过直连和ODBC两种方式的调用方法: String ls_tablename="TestTable" String ls_columnname="TestColumn" Long ll_newid //直连方式 DECLARE sp_test PROCEDURE FOR dbo.up_getnewid @TableName = :ls_tablename,@TableColumn = :ls_columnname; ////ODBC //DECLARE sp_test PROCEDURE FOR dbo.up_getnewid(:ls_tablename,:ls_columnname); //PB调用带返回值的存储过程:////声明储存过程: CREATE PROCEDURE proc_pslx ( @NAME varchar(2) ,@count integer output) AS select @count = Count(*) from wo_info where whs_name=@NAME ; GO ////在PB中调用:

SQL存储过程实例

题目1 1、学校图书馆借书信息管理系统建立三个表: 学生信息表:student 图书表:book 借书信息表:borrow 请编写SQL语句完成以下的功能: 1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、 学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示: 2)查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:

3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期; 参考查询结果如下图所示: 4)查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所 示: 附加:建表语句:

标准答案:

题目2 程序员工资表:ProWage 创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止,存储过程执行完后,最终加了多少钱? 例如:如果有百分之五十的人薪水不到2000,给所有人加薪,每次加100元,直到有一半以上的人工资大于2000元,调用存储过程后的结果如图:

请编写T-SQL来实现如下功能: 1)创建存储过程,查询是否有一半程序员的工资在2200、3000、3500、4000、5000或6000 元之上,如果不到分别每次给每个程序员加薪100元,至之一半程序员的工资达到2200,3000,3500,4000,5000或6000元。 2)创建存储过程,查询程序员平均工资在4500元,如果不到则每个程序员每次加200元, 至到所有程序员平均工资达到4500元。 建表语句

C#执行存储过程代码实例

C#执行存储过程代码实例,演示如何用C#调用并执行SQLSERVER的存储过程,是一个数据库的高级应用,存储过程相对专业些,但效率更高,而且使SQL的功能发挥的更强大,这仅是一个较简单的存储过程调用例子: 01using System; 02using System.Data; 03using System.Data.SqlClient; 04namespace ExecuteStorageProcess 05{ 06 public class ExecuteStorageProcess 07 { 08 public static void Main() 09 { 10 SqlConnection mySqlConnection = 11 new SqlConnection( 12 "server=localhost;database=Northwind;uid=sa;pwd=sa" 13 ); 14 mySqlConnection.Open(); 15 // 设置CommandText属性为EXECUTE语句 16 SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); 17 https://www.doczj.com/doc/8a5256695.html,mandText = 18 "EXECUTE AddProduct @MyProductID OUTPUT, @MyProductName, " + 19 "@MySupplierID, @MyCategoryID, @MyQuantityPerUnit, " + 20 "@MyUnitPrice, @MyUnitsInStock, @MyUnitsOnOrder, " + 21 "@MyReorderLevel, @MyDiscontinued"; 22 // 添加过程调用所要用到的参数 23 mySqlCommand.Parameters.Add("@MyProductID", SqlDbType.Int); 24 mySqlCommand.Parameters["@MyProductID"].Direction = 25 ParameterDirection.Output; 26 mySqlCommand.Parameters.Add( 27 "@MyProductName", SqlDbType.NVarChar, 40).Value = "Widget"; 28 mySqlCommand.Parameters.Add( 29 "@MySupplierID", SqlDbType.Int).Value = 1; 30 mySqlCommand.Parameters.Add( 31 "@MyCategoryID", SqlDbType.Int).Value = 1; 32 mySqlCommand.Parameters.Add( 33 "@MyQuantityPerUnit", SqlDbType.NVarChar, 20).Value = "1 per box"; 34 mySqlCommand.Parameters.Add( 35 "@MyUnitPrice", SqlDbType.Money).Value = 5.99; 36 mySqlCommand.Parameters.Add( 37 "@MyUnitsInStock", SqlDbType.SmallInt).Value = 10; 38 mySqlCommand.Parameters.Add( 39 "@MyUnitsOnOrder", SqlDbType.SmallInt).Value = 5;

Java桌面应用程序原型

搭建Java桌面应用程序原型(一) 作者:odt团队文章来源:csdn 点击数:1131 更新时间:2006-9-24 原文地址:https://www.doczj.com/doc/8a5256695.html,/Article/kfyy/java/jc/200609/4439.html 在这篇文章里,我将描述一个Java桌面应用的原型,我把它叫做JImageing。我打算把焦点集中在应用的框架上,解释我怎么做技术上的决定和我怎么解决在开发过程中出现的问题。 为什么要建造一个原型? 很多应用程序的开发都是由于几个原因从一个原型开始的。这些原因中的第一条就是,你必须确定用现有的技术能够满足用户的需求。例如,在不用本地代码的Swing应用程序中Windows集成不能够被实现,这就导致丧失了一些Ja va跨平台的优势。SWT提供了一个和操作系统有限制的集成,这就允许你在很多本地平台上运行同一应用程序。在很多场合,J2SE平台提供给你需要搭建复杂桌面应用程序的丰富性能。在搭建大型Java桌面工程之前,你总是应该搭建一个原型去看J2SE是否满足应用程序的需求。 另一方面证明你的想法能够被实现并且你的技术决定是正确的,一个原型能够在开发过程中尽早的获得用户的反馈。原型也能帮助你估计完成你的工程所需要的时间和资源。花大量的工作去搭建一个有着菜单,对话框,拖拽特性、剪切版支持、恢复管理、打印等功能的用户接口。在开始这些工作之前,你应该知道搭建应用程序核心功能有多困难。如果你不得不用第三方自定义组件,你应该测试他们看看是否能和你的原型一起工作。如果你不得不解决扩展和性能问题,你应该通过原型状态找到解决方案。 用户需求 JImageing原型是一个桌面应用程序,这个应用程序允许你给图片注释。Email可能是最流行的“协作工具”,但是可以通过图片工具提高在截图上做注释的能力,这种图片工具可以让你画线,画矩形、椭圆并且可以写注释信息在图片上。 如果JImageing的用户使用一个以上的操作系统,那么对于这样的一个应用程序Java是很自然的选择。当Window s支配桌面市场的时候,有一些用户选择Mac或者Linux。例如,当Java开发者通过互联网对一个项目进行合作的时候,有一可能性是他们可以不用同一种操作系统。 这个用户接口非常简单,它包括一个工具栏和一个画图区。对于测试应用程序的主要功能来说足够用了。下图显示了这个接口的样子:

SQL存储过程使用方法.

SQL存储过程使用方法所有的大型数据库都支持存储过程,比如Oracle、MS SQL等,(但MS Access不支持,不过,在Access里可以使用参数化的查询)。存储过程是利用SQL Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pro-SQL和Informix的数据库系统能够中的Informix-4GL语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序: 1、变量说明 2、ANSI兼容的SQL命令(如Select,Update…. 3、一般流程控制命令(if…else…、while…. 4、内部函数存储过程的书写格 CREATE PROCEDURE [拥有者.]存储过程名[;程序编号] [(参数#1,…参数#1024] [WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ] [FOR REPLICATION] AS 程序行其中存储过程名不能超过128 个字。每个存储过程中最多设定1024个参数(SQL Server 7.0以上版本,参数的使用方法如下: @参数名数据类型 [VARYING] [=内定值] [OUTPUT] 每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE 外,其他SQL Server所支持的数据类型都可使用。 [=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。 CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS SELECT @p_tot = sum(Unitprice*Quantity FROM orderdetails WHERE ordered=@o_id 该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id,由定单明细表(orderdetails中计算该定单销售总额[单价(Unitprice*数量(Quantity],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序使用存储过程有许多好处,它可以封装复杂的数据逻辑,充分发挥大型数据库本身的优势。我们知道,ASP并不适合做复杂的数据运算,而通过OLD DB访问数据库,由于数据需要在ASP和数据库之间传递,相当消耗系统资源。事实上,如果数据库仅仅起着

使用存储过程的传入参数

CREATE TABLE student2 ( number varchar(6) primary key, --学号 name varchar(8) not null unique, --姓名 password varchar(6) not null, --密码 ) GO INSERT stu VALUES ('000001','黎明','111111') INSERT stu VALUES ('000002','赵怡春','222222') INSERT stu VALUES ('000003','张富平','333333') INSERT stu VALUES ('000004','白丽','444444') INSERT stu VALUES ('000005','牛玉德','555555') INSERT stu VALUES ('000006','姚华','666666') INSERT stu VALUES ('000007','李南','777777') GO CREATE TABLE grade ( number varchar (6), --学号 course varchar (20) , --课程名称 grade int, --成绩 CONSTRAINT PK_grade PRIMARY KEY CLUSTERED ( number,course ) ) GO

INSERT INTO grade VALUES ('000001','C++',56); INSERT INTO grade VALUES ('000002','Java',90); INSERT INTO grade VALUES ('000004','Java',77); INSERT INTO grade VALUES ('000005','英语',91); INSERT INTO grade VALUES ('000004','C++',76); INSERT INTO grade VALUES ('000003','C++',67); INSERT INTO grade VALUES ('000001','英语',78); INSERT INTO grade VALUES ('000002','C++',74); INSERT INTO grade VALUES ('000002','英语',86); INSERT INTO grade VALUES ('000003','Java',80); INSERT INTO grade VALUES ('000004','英语',90); GO CREATE PROCEDURE GetGradesFromStuName @stuName varchar(8) AS select course,grade from student2 inner join grade on student2.number=grade.number where name=@stuName package databasevisit; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import javax.swing.JOptionPane; public class IncomingParametersUsingTheStoredProcedure { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Connection con = null; // 执行存储过程的数据命令 CallableStatement cstm = null; ResultSet rs = null; ResultSetMetaData rsmd = null; String name = JOptionPane.showInputDialog("请输入学生姓名");

常用窗体控件

常用窗体控件: String str=””; Foreach(Control item in this.Controls) { If(https://www.doczj.com/doc/8a5256695.html,.IndexOf(“checkBox”)>0) { CheckBox ck=(CheckBox)Item; If(ck.Checked) { Str=ck.Text+”,”; } } }

高级窗体控件: 1.菜单控件MenuStrip 使用步骤: ①在Windows窗体中添加一个MenuStrip控件 ②单击该控件的Items属性,弹出“项集合编辑器”对话框 ③可以添加MenuItem子项。子项的子菜单 选择其“MenuItem”选项,单击其 DropDownItems属性,弹出相接对话框 ①选中要添加右键功能的Form或者控件,打开控件的设计页面 ②从工具箱中找到ContextMenuStrip控件,将这个控件拖曳到Form或者控件的设计页 面上。这时系统就会在这个页面下面自动创建一个contextMenuStrip1控件,如果你想在这个页面添加多个菜单,那么你也可以拖曳多个这种控件到设计页面上。 ③按照你的要求将这些ContextMenuStrip控件改成你需要的名称。然后, 选择需要右 键弹出菜单的页面,比如你当前编辑的页面中有一个DataGrid,一个T reeList,而你想分别为这两个控件添加不同的右键菜单。那么你就可以先选择DataGrid控件,然后在这个控件的属性中找到ContextMenuStrip属性,点击该属性,系统会自动查找你拖曳到当前页面的所有ContextMenuStrip控件并将这些控件罗列在这个属性的下拉菜单中。你可以选择一个你预先定义好的ContextMenuStrip控件。这样就为这个DataGrid控件设置了右键菜单。其他控件也使用同样的方法添加。 ④定义你的菜单,在为控件分配完菜单之后,你就可以定义单个的菜单。这时你可以 选中一个ContextMenu控件。系统会自动在编辑页面的上面现一个可编辑的动态菜

netbeans创建桌面应用程序教程

NetBeans 6的新功能第2部分:Java桌面应用程序 NetBeans 6.0 为Java 提供的新功能和扩展功能 NetBeans 6.0 提供了众多新功能和扩展功能,众所周知的GUI 设计器(Matisse 项目)也从5.5 版本开始得到了极大的增强。此外,由于整合了Profiler,5.5 版也变 有关这些新功能和扩展功能的详细信息,请参阅 https://www.doczj.com/doc/8a5256695.html,/features/index_ja.html 现在,尝试利用Swing 应用程序框架,开发一个简单的获取图像的应用程序。实现 在Flickr(https://www.doczj.com/doc/8a5256695.html,)进行关键字搜索,获取并且显示单幅图像的功能。(要运行此Demo,需要获取Flickr API 的API KEY,并能连接到互联网。) ■Swing 应用程序框架(JSR-296) Swing 应用程序框架可用于创建Swing 应用程序。框架给人的印象总是非常繁琐且难以使用,但Swing 应用程序框架却是一个小巧、没有特定设置文件且简单易用的框架。https://https://www.doczj.com/doc/8a5256695.html,/ 正在进行该框架的进一步开发工作。 Swing 应用程序框架https://https://www.doczj.com/doc/8a5256695.html,/

JSR-296 https://www.doczj.com/doc/8a5256695.html,/en/jsr/detail?id=296 下面简要介绍该框架的基本情况。首先来看看该框架的整体结构,这对后续使用NetBeans 的GUI 设计器会有一定帮助。 图 1 Swing 应用程序框架的整体结构 Swing 应用程序框架主要由以下5 部分构成,并能提供较为复杂的生命周期管理和Session 管理等。此外,可以简单地重用添加了@Action 注释的Action。不需要使用 ■创建Java 桌面应用程序项目

C# WinForm窗体及其控件的自适应

C# WinForm窗体及其控件的自适应 C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化。为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.根据窗体变化了的大小,成比例地实现其控件的水平和垂直方向的变化,也就是自适应。 二。使用方法 使用方法很简单, 1.把自适应的类整体复制到你的工程命名空间里, 然后在需要自适应的窗体中做3步即可: 2.声明自适应类实例。 3.为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件初始位置和大小 4.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 三。完整代码如下: (一)。自适应窗体的代码: using System; using System.Collections.Generic;

using https://www.doczj.com/doc/8a5256695.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { //1.声明自适应类实例 AutoSizeFormClass asc = new AutoSizeFormClass(); public Form1() { InitializeComponent(); } //2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小 private void Form1_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); } //3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 private void Form1_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }

oracle存储过程学习经典[语法实例调用]

Oracl e 存储过程学习 目录 Oracle 存储过程1 Oracle存储过程基础知识1 Oracle存储过程的基本语法2 关于Oracle存储过程的若干问题备忘4 1.在Oracle中,数据表别名不能加as。5 2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用 游标的话就另当别论了。5 3.在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常。5 4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段 会报错5 5.在存储过程中,关于出现null的问题5 6.Hibernate调用Oracle存储过程6 用Java调用Oracle存储过程总结6 一、无返回值的存储过程6 二、有返回值的存储过程(非列表)8 三、返回列表10 在存储过程中做简单动态查询11 一、本地动态SQL12 二、使用DBMS_SQL包14 Oracle存储过程调用Java方法16 Oracle高效分页存储过程实例17 Oracle存储过程基础知识 商业规则和业务逻辑可以通过程序存储在Oracle中,这个程序就是存储过程。 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用。 要创建一个过程对象(procedural object),必须有CREATE PROCEDURE 系统权限。如果这个过程对象需要被其他的用户schema 使用,那么你必须有CREATE ANY PROCEDURE 权限。执行procedure 的时候,可能需要excute权限。或者EXCUTE ANY PROCEDURE 权限。如果单独赋予权限,如下例所示: grant execute on MY_PROCEDURE to Jelly 调用一个存储过程的例子: execute MY_PROCEDURE( 'ONE PARAMETER'); 存储过程(PROCEDURE)和函数(FUNCTION)的区别。

C++调用SQL存储过程实例

c/c++调用mysql存储过程 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出。6.0不仅支持大型数据库如oracle等的绝大部分功能,如存储过程、视图、触发器、job等等,而且修正了这些功能所存在的bug,其中6.0.1还支持64位windows,以及表空间。 在c/c++中访问mysql,常见的只是一些简单的业务,使用c中嵌入简单的查询、插入、更新等操作即可。随着业务的复杂化,完成一个业务功能需要非常多的sql操作环节,把这些语句都嵌入c代码中会导致c代码越来越繁琐、不清晰,这时候,自然就想到了存储过程来封装所有的数据库逻辑,通过c简单调用mysql存储过程接口即可达到目的,极大地减轻了c程序员的工作量,也便于前端业务处理逻辑与数据库处理逻辑的分离。下面就介绍c 语言调用存储过程的简单的方法。 1、首先创建一张表 用于存放用户信息 Create table student( id int auto_increment, name varchar(20), age tinyint, remark varchar(50), primary key(id) ); 2、插入几条信息 Insert into student values(1,"zhouys",90, ""); commit; 3、查看用户信息 mysql> select * from student;

+------+-----------+------+----------+ | id | name | age | remark | +------+-----------+------+----------+ | 1 | zhouys | 90 | | +------+-----------+------+-----------+ 1 row in set (0.00 sec) mysql> 4、创建存储过程 如下: delimiter // create procedure querystudent( in in_id int , #0-字符id 1-数字id # out out_ret int, #返回结果 out out_name varchar(20), #名字 out out_age int #年龄) label_a:begin declare v_name varchar(20) ; declare v_age tinyint ; #参数判断 if (in_id<=0) then set out_ret=-1; #id error

winform窗体和控件自适应

有时winform窗体的大小会改变,此时窗体上的控件会很混乱,如何可以使控件自适应窗体呢?以 下就是方法: 1、首先在自己的命名空间里先建一个Autosize.cs类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace 自己的命名空间 { class Autosize { public void setTag(Control cons) { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) setTag(con); } } string[] mytag; public void setControls(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { if (con.Tag != null) { mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy); }

相关主题
文本预览
相关文档 最新文档