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] ( ...
随机推荐
- 零基础入门学习Python(16)--序列!序列!
前言 你可能发现了,小甲鱼把这个列表,元组,字符串放在一起讲是有道理的,它们有许多共同点: 都可以通过索引得到每一个元素 默认索引值总是从0开始 可以通过分片的方法得到一个范围内的元素的集合 有很多共 ...
- 杭电 1789 Doing Homework again (贪心 求最少扣分)
Description zichen has just come back school from the 30th ACM/ ICPC. Now he has a lot of homework t ...
- 九度教程第22题——今年暑假不AC(看尽量多的电视节目)
#define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <algorithm> using namespace ...
- HDU 5458 Stability
Stability Time Limit: 2000ms Memory Limit: 102400KB This problem will be judged on HDU. Original ID: ...
- POJ-3041 Asteroids,二分匹配解决棋盘问题。
Asteroids Time Limit: 1000MS Memory Limit: 65536K Description Bessie wants to navigate her s ...
- 爬虫(1):requests模块
requests介绍: reqeusts模块:python原生一个基于网络请求的模块,模拟浏览器发起请求. requests模块的优点: - 1.自动处理url编码 - 2.自动处理post请求的参数 ...
- android源码编译时拷贝替换指定文件
由于要做版本定制,某些版本的资源文件等(例如style.xml)需要不同的配置,但是android的编译开关无法在xml里使用,于是想到了编译时根据不同的编译开关编译不同的文件,如下: 1.建立A.x ...
- 【JZOJ4857】Tourist Attractions(Bitset)
题意:给定一个n个点的无向图,求这个图中有多少条长度为4的简单路径. n<=1500 思路: #include<map> #include<set> #include&l ...
- centos7 host修改
首先要说明,hostname和hosts文件没有必然联系,有不明白的同学可以先自行查阅资料了解hostname和hosts文件的关系.这里简要说明一下. hosts文件是dns服务的前身,网络刚开始出 ...
- python基础之-字符串
字符模块:strstr.strip():去掉字符串前后空格str.lstrip():去掉字符串左侧空格str.rstrip():去掉字符串右侧空格str.encode():将字符串编码为二进制str. ...