C# WINFORM 窗体执行ORACLE存储过程 进行增删改查 自己编写借助网络(二)
窗体界面:

下面是项目二的代码 本代码我是留着备份学习的 以供参考:
存储过程:
存储过程:
插入数据:
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存储过程 进行增删改查 自己编写借助网络(二)的更多相关文章
- oracle触发器中增删改查本表
oracle触发器中增删改查本表 (1)只有before insert触发器中才可以查询或更新本表 create or replace trigger tri_test_ins before inse ...
- oracle-扫盲贴:存储过程实现增删改查
原文引入:http://blog.csdn.net/yangzhawen/article/details/8617179 oracle-扫盲贴:存储过程实现增删改查 分类: oracle2013-02 ...
- SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)
Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...
- C#winform窗口登录和数据的增删改查
工具:VS2013 数据库SqlServer2008 两张表,一个用户登录表,一个资料表用于增删改查 .先把表建好.可以根据我发的图建立,这样下面的代码修改的就少. 资料部分SQL CREATE TA ...
- sql server连接oracle并实现增删改查
需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2 sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpR ...
- c#winform简单实现Mysql数据库的增删改查的语句
通过简单的SQL语句实现对数据库的增删改查. 窗口如下: 定义打开与关闭连接函数,方便每次调用: 增加指令: 删除指令: 修改指令: 查找指令: 表格情况:
- 微软Connect教程系列--自动生成增删改查页面工具介绍(二)
本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...
- 创建支持CRUD(增删改查)操作的Web API(二)
一:准备工作 你可以直接下载源码查看 Download the completed project. 下载完整的项目 CRUD是指“创建(C).读取(R).更新(U)和删除(D)”,它们是四个 ...
- SqlServer存储过程(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
随机推荐
- 笔试算法题(19):判断两条单向链表的公共节点 & 字符集删除函数
出题:给定两个单向链表的头结点,判断其是否有公共节点并确定第一个公共节点的索引: 分析: 由于是单向链表,所以每个节点有且仅有一个后续节点,所以只可能是Y型交叉(每条链表中的某个节点同时指向一个公共节 ...
- [Python3网络爬虫开发实战] 7.1-Selenium的使用
Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaScript动态渲染的页面来说 ...
- 如何自己实现session功能
session字如其意,它的存在就是为了保持会话状态.PHP中的$_SESSION让我们很方便的使用它,但是如果PHP本身不提供这个功能,我们该如何实现呢?且听我慢慢忽悠. session的实现原理 ...
- lucene-5.3.1配置(win7x64)
lucene下载地址:http://www.us.apache.org/dist/lucene/java/5.3.1/lucene-5.3.1.zip 下载之后解压 控制台应用程序下配置: 找到luc ...
- First C program
come from https://mooc.study.163.com/learn/1000002011?tid=2001530003#/learn/content?type=detail& ...
- 动态规划之最长递增子序列(LIS)
在一个已知的序列{ a1,a2,……am}中,取出若干数组成新的序列{ ai1, ai2,…… aim},其中下标 i1,i2, ……im保持递增,即新数列中的各个数之间依旧保持原数列中 ...
- 洛谷 P2285 BZOJ 1207 [HNOI2004]打鼹鼠
题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气. ...
- 【bzoj1922】[Sdoi2010]大陆争霸 - STL - dijkstra
信仰斯普林·布拉泽的克里斯国教徒. 幻想历 8012年 3月2日,位于杰森国东部小镇神谕镇的克里斯国教徒发动 起义. 幻想历 8012年 3月7日,神谕镇的起义被杰森国大军以残酷手段镇压. 幻想历 8 ...
- 光纤通信(codevs 1955)
题目描述 Description 农民John 想要用光纤连通他的N (1 <= N <= 1,000)个牲口棚(编号1..N).但是,牲口棚位于一个大池塘边,他仅可以连通相邻的牲口棚.J ...
- 【IntelliJ】IDEA使用--字体、编码和基本设置
IDEA这么高端的工具之前只是断断续续使用了一下,因为项目的开发都是在eclipse上,每次学习IDEA的使用都得上网搜索半天,今天自己整理一下,方便以后查阅. IDEA版本15.0.4 字体 界面字 ...