窗体界面:

下面是项目二的代码 本代码我是留着备份学习的 以供参考:

存储过程:

存储过程:
插入数据:
CREATE OR REPLACE Procedure p_insert_t_cls --存储过程名称
(
p_stuid in CLASSES.ID%type,
p_stuname in varchar
)
as
BEGIN
insert into classes
values
(p_stuid,p_stuname);
commit;
end;

===============================================
删除 :(带返回参数)
create or replace procedure proc_delete
(
isid in number , P_ROWS OUT NUMBER
)
is
begin
delete classes where id=isid;
If SQL%Found Then
DBMS_OUTPUT.PUT_LINE('删除成功!');
P_ROWS := 1;
Else
DBMS_OUTPUT.PUT_LINE('删除失败!');
P_ROWS := 0;
End If;
commit;
end
;

删除 : (不带返回参数)
create or replace procedure p_delete_t_cls1(
cla_id in Number
)
is
begin
DELETE FROM classes WHERE id = cla_id;
commit;
end p_delete_t_cls1;

删除 : (不带返回参数)指定ID删除
create or replace procedure p_delete_t_cls is
begin
DELETE FROM classes WHERE id = 7;
commit;
end p_delete_t_cls;
====================================================

修改数据:(不带返回参数)
create or replace procedure p_update_t_cls1(
p_stuid in Number,
p_stuname in Nvarchar2
)
is
begin
update classes x set x.classname = p_stuname where x.id = p_stuid;
commit;
end p_update_t_cls1;

修改数据: :(带返回参数)

create or replace procedure proc_update(
p_stuid in Number,
p_stuname in Nvarchar2,
P_ROW out number
)
is
begin
update classes set classname = p_stuname where id = p_stuid;
If SQL%Found Then
DBMS_OUTPUT.PUT_LINE('更新成功!');
P_ROW := 1;
Else
DBMS_OUTPUT.PUT_LINE('更新失败!');
P_ROW := 0;
End If;
commit;
end proc_update;

修改数据: : (不带返回参数)指定ID修改
create or replace procedure p_update_t_cls
is
begin
update classes x set x.classname = '44' where x.id = 3;
commit;
end p_update_t_cls;

====================================================

查询所有数据:(带返回参数 游标)
CREATE OR REPLACE PACKAGE pkg_test1
AS
TYPE myrctype IS REF CURSOR;

PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test1 ;

create or replace function testpro1 return types1.cursorType1 is
lc1 types1.cursorType1;
begin
open lc1 for select id,classname from classes;
return lc1;
end testpro1;

传递ID查询数据:(带返回参数 游标)传递ID查询数据
create or replace package types as
type cursorType is ref cursor;
end;

create or replace function testpro(IV IN NUMBER) return types.cursorType is
lc types.cursorType;
begin
open lc for select * from test where ID=IV;
return lc;
end testpro;
====================================================

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;

namespace WindowsFormsApplication2_ceshi
{
public partial class form_ceshi : Form
{
public static String oradb = "Data Source=orcl;User ID=KEYPROJECTDATA;Password=KEYPROJECT;";
OracleOP OracleOP = new OracleOP(oradb);
public form_ceshi()
{
InitializeComponent();
}

private void btn_shanchu_Click(object sender, EventArgs e)
{
try
{
// 第一种方式
//OracleConnection conn = new OracleConnection(oradb);
//conn.Open();
//int strid = Convert.ToInt32(txt_shanchuword.Text);
//string strdeletebyid = "delete classes where id = " + strid;
//int i = OracleOP.ExecuteSql(strdeletebyid.ToString());

//// 第二种方式
//OracleConnection conn = new OracleConnection(oradb);
//conn.Open();
//int strid = Convert.ToInt32(txt_shanchuword.Text);
//OracleParameter[] param =
//{
// new OracleParameter("cla_id", OracleType.Int32)
//};
//param[0].Value = strid;
////string strdeletebyid = "p_delete_t_ceshiF_cls1";
//int i = OracleOP.ExecuteProcedure("p_delete_t_ceshiF_cls1", param);
//int i = OracleOP.ExecuteProcedure("PROC_DETELE_ID", param);

// 第三种方式
OracleConnection conn = new OracleConnection(oradb);
conn.Open();
int strid = Convert.ToInt32(txt_shanchuword.Text);
OracleParameter[] param =
{
new OracleParameter("isid", OracleType.Int32)
};
param[0].Value = strid;
//int i = OracleOP.ExecuteProcedure("PROC_DETELE_ID", param);

int i = OracleOP.ExecuteProcedure("proc_delete", param);

//int strid = Convert.ToInt32(txt_shanchuword.Text);
//OracleConnection con = new OracleConnection(oradb);
//OracleCommand orclCMD = new OracleCommand();
//orclCMD.Connection = con;
//orclCMD.CommandText = "proc_delete"; //存储过程名
//orclCMD.CommandType = CommandType.StoredProcedure;//表面是存储过程 如果创建存储过程是有变量,所以还要声明变量
//OracleParameter IdIn = orclCMD.Parameters.Add("isid", OracleType.Number); //输入参数

//IdIn.Value = XXX;
//OracleParameter IdIn1 = orclCMD.Parameters.Add("planid", OracleType.VarChar, 16); //输入参数
//IdIn1.Direction = ParameterDirection.Input;
//IdIn1.Value =XXX;
//orclCMD.ExecuteNonQuery();
//IdIn.Direction = ParameterDirection.Output;
//int i = OracleOP.ExecuteProcedure("proc_delete", param);

if (i > 0)
{
MessageBox.Show("删除成功!");
}
else if (i == 0)
{
MessageBox.Show("无此数据!");
}
else
{
MessageBox.Show("删除失败!");
};
conn.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{

}
}

private void btn_xiugai_Click(object sender, EventArgs e)
{
try
{
//OracleConnection conn = new OracleConnection(oradb);
//conn.Open();
//int strid = Convert.ToInt32(txt_shanchuword.Text);
//string strdeletebyid = "delete classes where id = " + strid;
//int i = OracleOP.ExecuteSql(strdeletebyid.ToString());

int strid = Convert.ToInt32(txt_xiugaiId_word.Text);
string strword = txt_xiugaiword_word.Text;
OracleParameter[] param =
{
new OracleParameter("p_stuid", OracleType.Number),
new OracleParameter("p_stuname", OracleType.VarChar)
};
param[0].Value = strid;
param[1].Value = strword;

//string strdeletebyid = "p_delete_t_ceshiF_cls1";
int i = OracleOP.ExecuteProcedure("p_update_t_ceshiF_cls1", param);

//MessageBox.Show(""+i);
if (i > 0)
{
MessageBox.Show("更新成功!");
}
else if (i == 0)
{
MessageBox.Show("无此更新数据!");
}
else
{
MessageBox.Show("更新失败!");
};
//conn.Dispose(); //Close()也可以。
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{

}
}

private void btn_all_Click(object sender, EventArgs e)
{
try
{
//// 这是执行oracle语句实现查询
//string strQueryAll = "select * from classes";
//DataSet ds = new DataSet();
//ds = OracleOP.GetDataSet(strQueryAll);
//dataGridView1.DataSource = ds.Tables[0];

// GetDataSet
string strQueryAll = "testpro2";
//GetProcedure
DataSet ds = new DataSet();
ds = OracleOP.GetProcedure(strQueryAll, "classes", null);
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{

}
}
}
}

=====================================================================================

C# WINFORM 窗体执行ORACLE存储过程 进行增删改查 自己编写借助网络(二)的更多相关文章

  1. oracle触发器中增删改查本表

    oracle触发器中增删改查本表 (1)只有before insert触发器中才可以查询或更新本表 create or replace trigger tri_test_ins before inse ...

  2. oracle-扫盲贴:存储过程实现增删改查

    原文引入:http://blog.csdn.net/yangzhawen/article/details/8617179 oracle-扫盲贴:存储过程实现增删改查 分类: oracle2013-02 ...

  3. SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)

    Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...

  4. C#winform窗口登录和数据的增删改查

    工具:VS2013 数据库SqlServer2008 两张表,一个用户登录表,一个资料表用于增删改查 .先把表建好.可以根据我发的图建立,这样下面的代码修改的就少. 资料部分SQL CREATE TA ...

  5. sql server连接oracle并实现增删改查

    需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2  sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpR ...

  6. c#winform简单实现Mysql数据库的增删改查的语句

    通过简单的SQL语句实现对数据库的增删改查. 窗口如下: 定义打开与关闭连接函数,方便每次调用: 增加指令: 删除指令: 修改指令: 查找指令: 表格情况:

  7. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)

    本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...

  8. 创建支持CRUD(增删改查)操作的Web API(二)

    一:准备工作 你可以直接下载源码查看 Download the completed project.     下载完整的项目 CRUD是指“创建(C).读取(R).更新(U)和删除(D)”,它们是四个 ...

  9. SqlServer存储过程(增删改查)

    * IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...

随机推荐

  1. 201621123082《Java程序设计》第1周学习总结

    1. 本周学习总结: 关键词: 了解Java语言的发展历史.了解Java语言的特点.JDK.JRE.JVM.eclipse等. 联系: JDK是提供给Java开发人员使用的一组工具,JDK包含JVM及 ...

  2. 安装配置Keepalived

    一.在haproxy容器安装Keepalived 1.进入haproxy容器: docker exec -it h1 bash 2.apt-get update(因为haproxy容器为Ubuntu) ...

  3. 常见算法的python实现

    提到排序算法,常见的有如下几种:冒泡排序.选择排序.插入排序.快速排序.堆排序.归并排序.希尔排序:查找算法最常见二分查找.这些算法的时间复杂度如下: 算法名称 时间复杂度(一般情况) 冒泡排序 O( ...

  4. 第十一节:pandas统计函数

    1.pct_change()计算增长比例 2.cov()协方差 3.corr()相关系数 4.rank()数据排名 5.numpy聚合函数

  5. Django-rest_framework中利用jwt登录验证时,自定义返回凭证和登录校验支持手机号

    安装 pip install djangorestframework-jwt 在Django.settings中配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATIO ...

  6. 判断List集合为空

    package org.springframework.util; CollectionUtils.isEmpty(list)

  7. wangEditor

    wangEditor 基于javascript和css开发的 Web富文本编辑器, 轻量.简洁.易用.开源免费 http://www.wangeditor.com/index.html API htt ...

  8. 主席树初探--BZOJ3524: [Poi2014]Couriers

    n<=500000个数,m<=500000个询问,每次问区间里出现次数>(R-L+1)的数字是谁,没有输出0. 写了带修改发现不会不带修改了.... 不带修改的话,n个点,每个点表示 ...

  9. HDU1166 线段树裸题 区间求和

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. POJ 3083_Children of the Candy Corn

    题意: 给定迷宫图,求出一个人从入口进,从出口出,所走过的最短路径以及分别沿着左手边和右手边的墙走出迷宫所走过的方格数. 分析: bfs求最短路 对于沿左右两边的墙走的情况,记录好行走的方向及相对应的 ...