VBNET2008连接Oracle增删改查学习笔记(经典CRUD_含存储过程)

我的+oracle增删改查学习笔记(本源码在2008下测试通过)学习有一段时间了,之前一直学习VB6.0。

过度到.NET 后发现与之前所学习的有了相当大的变化。

于是将编程经常用到的增删改查代码提炼出来,备后日使用及各位一起学习。

各段代码均可以独立运行,读者可以活学活用,设置公共变量剔除冗余代码。

可以将连接代码写成函数,随时调用,不用每次都加。

主要内容为:添加数据库部件引用、设置连接字符串、设置界面、查询并将结果放入表中、添加按钮代码、修改操作、删除操作、调用无参数的存储过程、调用有参数的存储过程、最终所有代码。

一、首先,要引用System.Data.OracleClient,我的电脑中已经安装Oracle9i,在COM选项卡下可以找到该项。

如果不添加该引用,程序将无法运行。

二、连接字符串(可以添加一个OracleConnection对象,针对您的计算机进行设置,然后复制ConnectionString代码,记得复制完删除它;也可以复制下面的代码,然后更改用户名及密码)'对OracleConnection对象的ConnectionString属性赋值,指定连接位置objconn.ConnectionString = "Data Source=myzsyy;Persist Security Info=True;User ID=bzk22;Password=zxcvbn;Unicode=True"三、界面如下四、查询并将结果放入表中,代码如下:我将该段代码放置在了Form_Load过程中,您也可以把该代码放置在按钮或其他过程中。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim strSql As StringDim strConn As StringDim objDA As OracleClient.OracleDataAdapterDim objds As New Data.DataSetstrConn = "Data Source=myzsyy;Persist Security Info=True;UserID=bzk22;Password=zxcvbn;Unicode=True"strSql = "select * from TEST "objDA = New OracleClient.OracleDataAdapter(strSql, strConn)objDA.Fill(objds, "TEST")DataGridView1.DataSource = objds.Tables("TEST")End Sub五、添加按钮代码如下:添加后表格中数据未进行更新,加入Call Form1_Load(sender, e)代码实现即时更新。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim strSql As StringDim strConn As StringDim objDA As OracleClient.OracleDataAdapterDim objds As New Data.DataSetDim objcb As OracleClient.OracleCommandBuilderDim objrow As Data.DataRowstrConn = "Data Source=myzsyy;Persist Security Info=True;UserID=bzk22;Password=zxcvbn;Unicode=True"strSql = "select * from TEST order by A DESC"objDA = New OracleClient.OracleDataAdapter(strSql, strConn)objcb = New OracleClient.OracleCommandBuilder(objDA)objDA.Fill(objds, " TEST ")objrow = objds.Tables("TEST ").NewRowobjrow("A") = TextBox1.Textobjrow("B") = TextBox2.Textobjrow("C") = TextBox3.Textobjrow("D") = TextBox4.Textobjds.Tables("TEST ").Rows.Add(objrow)objDA.Update(objds, " TEST ")Call Form1_Load(sender, e)End Sub六、修改操作,分两步,首先将表格中选中行数据放在各个TextBox中,然后进行UpDate操作。

第一步:注意是DataGridView1_CellClick事件。

其他事件单击后无此效果。

Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClickTextBox1.Text = DataGridView1.CurrentRow.Cells.Item(0).Value.ToStringTextBox2.Text = DataGridView1.CurrentRow.Cells.Item(1).Value.ToStringTextBox3.Text = DataGridView1.CurrentRow.Cells.Item(2).Value.ToStringTextBox4.Text = DataGridView1.CurrentRow.Cells.Item(3).Value.ToString End Sub第二部:修改按钮代码如下:Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickDim strSql As StringDim strConn As StringDim objDA As OracleClient.OracleDataAdapterDim objds As New Data.DataSetstrConn = "Data Source=myzsyy;Persist Security Info=True;UserID=bzk22;Password=zxcvbn;Unicode=True"strSql = "update TEST set B='" + Trim(TextBox2.Text) + "',C='" + Trim(TextBox3.Text) + "',D='" + Trim(TextBox4.Text) + "' where A='" + Trim(TextBox1.Text) + "'"objDA = New OracleClient.OracleDataAdapter(strSql, strConn)objDA.Fill(objds, " TEST ")Call Form1_Load(sender, e)End SubEnd Class七、删除按钮代码如下:Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim strSql As StringDim strConn As StringDim objDA As OracleClient.OracleDataAdapterDim objds As New Data.DataSetstrConn = "Data Source=myzsyy;Persist Security Info=True;UserID=bzk22;Password=zxcvbn;Unicode=True"strSql = "delete from TEST where A like '%" + Trim(TextBox1.Text) + "%'"objDA = New OracleClient.OracleDataAdapter(strSql, strConn)objDA.Fill(objds, " TEST ")End Sub八、调用带参数的存储过程第一步:创建存储过程create or replace procedure addTest(Pro_A TEST.A%type,Pro_B TEST.B%type,Pro_C TEST.C%type,Pro_D TEST.D%type)asbegininsert into TEST (A,B,C,D)values(Pro_A,Pro_B,Pro_C,Pro_D);commit;end;第二步:利用存储过程添加记录按钮的代码Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickDim strConn As New OracleConnection("Data Source=myzsyy;Persist Security Info=True;User ID=bzk22;Password=zxcvbn;Unicode=True")Dim objCmd As New OracleCommand()objCmd.Connection = strConn'bzk22.addtest为存储过程名mandText = "bzk22.addtest"mandType = CommandType.StoredProcedure'Pro_A为存储过程中参数的名称objCmd.Parameters.Add("Pro_A", OracleType.VarChar).Value = TextBox1.TextobjCmd.Parameters.Add("Pro_B", OracleType.VarChar).Value = TextBox2.TextobjCmd.Parameters.Add("Pro_C", OracleType.VarChar).Value = TextBox3.TextobjCmd.Parameters.Add("Pro_D", OracleType.VarChar).Value = TextBox4.Text Dim objDA As New OracleDataAdapter(objCmd)Dim objDs As New DataSet()objDA.Fill(objDs, " TEST ")Call Form1_Load(sender, e)End Sub九、调用带参数的存储过程各段代码均可以独立运行,读者可以活学活用,设置公共变量剔除冗余代码。

合集下载

VS2008C#Sqlserver2008数据库的连接以及增删改查

VS2008C#Sqlserver2008数据库的连接以及增删改查

VS2008C#Sqlserver2008数据库的连接以及增删改查using System.Data.SqlClient;SqlConnection conn;//连接数据库private void Form1_Load(object sender, EventArgs e){string constr = "server=ACER-PC\\LI;database=db_test;uid=sa;pwd=123";conn = new SqlConnection(constr); //数据库连接}查询://这⾥只要连接数据库即可,不必打开数据库private void button1_Click(object sender, EventArgs e){SqlCommand cmd = new SqlCommand("select * from tb_ls", conn);SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = cmd;DataSet ds = new DataSet();sda.Fill(ds, "cs");dataGridView1.DataSource = ds.Tables[0];}删除:private void button2_Click(object sender, EventArgs e){if (this.dataGridView1.SelectedRows.Count > 0){DataRowView drv = dataGridView1.SelectedRows[0].DataBoundItem as DataRowView;drv.Delete();}conn.Open();//打开数据库SqlCommand cmd = new SqlCommand("delete from tb_ls where 编号="+this.dataGridView1.CurrentRow.Cells["编号"].Value+"",conn);cmd.ExecuteNonQuery();conn.Close();//关闭数据库}添加:private void button3_Click(object sender, EventArgs e){conn.Open();SqlCommand cmd = new SqlCommand("insert into tb_ls values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"')",conn);cmd.ExecuteNonQuery();conn.Close();}更新:private void button4_Click(object sender, EventArgs e){conn.Open();SqlCommand cmd = new SqlCommand("update tb_ls set 姓名='"+textBox2.Text+"',性别='"+textBox3.Text+"',年龄='"+textBox4.Text+"' where 编号='"+textBox1.Text+"'",conn); textBox1.ReadOnly = false;cmd.ExecuteNonQuery();conn.Close();}。

Oracle的基本语法(增删改查)

Oracle的基本语法(增删改查)

Oracle的基本语法(增删改查)表的操作:创建表:create table 表名(列名属性;);查看表结构:desc 表名;表重命名:rename 原表名 to 新表名;删除表:drop 表名;表的字段操作:增:alter table 表名 add 列名列的属性; --单列操作alter table 表名 add (列名1 列1的属性,列名2 列2的属性,...) --多列操作删: alter table 表名 drop column 列名; --单列操作alter table 表名 drop (列1,列2); --多列操作(多列不需要加column)改:alter table 表名 modify 列名新属性; --单列操作alter table 表名 modify (列名1 列1的新属性,列名2 列2的新属性);--多列操作数据的操作:增:--单⾏操作insert into 表名 values(所有列的信息); --数据类型必须与表结构⾥字段的属性⼀致insert into 表名 values(部分信息); --会按表的字段顺序加⼊信息,后⾯没设置的为null(输⼊数据必须⼩于或等于列数) --多⾏操作insert into 表1select 数据1 from dualunionselect 数据2 from dual; --dual 是⼀张伪表只是为了⽅便操作⽽存在,需要了解的请百度删:delete from 表名 --删除所有数据delete 列名 from 表名 where 条件 --删除符合条件的某些数据删除某⼀列数据(该列必须可以为null):1.update 表名 set 列名=null;2.delete from 表名 where 列名 is not null ;改:update 表名 set 列名=数据 where 条件; --修改满⾜条件的数据update 表名 set 列名=数据; --将该列全部修改查看:select * from 表名; --查看表的全部信息select 列1,列2 from 表名; --查看表的列1,列2信息。

Oracle存储过程的增、删、改、查的简单举例(精)

Oracle存储过程的增、删、改、查的简单举例(精)

Oracle存储过程的增、删、改、查: Packages: create or replace packageemp_pags is type emp_cour is ref cursor;--定义游标类型的变量emp_cour-- --添加员工-- function saveEmp(e_ename emp.ename%TYPE, e_job emp.job%TYPE, e_sal emp.sal%TYPE, e_deptno emp.deptno%TYPE return integer;--定义返回类型-- --修改员工信息-- function updateEmp(e_empno emp.empno%TYPE, e_enameemp.ename%TYPE, e_job emp.job%TYPE, e_sal emp.sal%TYPE, e_deptnoemp.deptno%TYPE return integer;--定义返回类型-- --删除员工-- function deleteEmp(e_empno emp.empno%TYPE return integer ; --查询全部-- procedure queryAll(emps out emp_cour;--定义一个输出类型的参数emps-- --查询单条-- procedure queryById(e_empno in number,emps out emp_cour;--定义-- --两表查询-- procedure queryJoin(empJoin out emp_cour; end emp_pags; Package bodies: create or replace package body emp_pags is --添加员工-- function saveEmp(e_enameemp.ename%TYPE, e_job emp.job%TYPE, e_sal emp.sal%TYPE, e_deptnoemp.deptno%TYPE return integer is begin insert into emp (empno,ename,job,sal,deptno values (emp_sequence.nextval,e_ename,e_job,e_sal,e_deptno; commit; return 1; exception when others then return 0; end saveEmp; --修改员工信息-- function updateEmp(e_empno emp.empno%TYPE, e_ename emp.ename%TYPE, e_jobemp.job%TYPE, e_sal emp.sal%TYPE, e_deptno emp.deptno%TYPE return integer is begin update emp set ename = e_ename, job = e_job, sal = e_sal, deptno = e_deptno where empno = e_empno; commit; return 1; exception when others then return 0; end updateEmp; --删除员工-- function deleteEmp(e_empno emp.empno%TYPE return integer is begin delete from emp where empno = e_empno; commit; return 1;exception when others then return 0; end deleteEmp; --查询全部-- procedure queryAll(emps out emp_cour is begin open emps for --打开游标-- selectempno,ename,job,sal,deptno from emp; end queryAll; --查询单条-- 定义两个参数,第一个输入,第二个输出 procedure queryById(e_empno in number,emps out emp_cour is begin open emps for--打开游标-- select empno,ename,job,sal,deptno from emp where empno = e_empno; end queryById; --量表查询-- procedure queryJoin(empJoin outemp_couris begin open empJoin for select e.empno,e.ename,e.job,e.sal,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno; end queryJoin; end emp_pags;。

oracle最简单的学习笔记增删改查PLSQL基本语法游标函数存储过程的实现

oracle最简单的学习笔记增删改查PLSQL基本语法游标函数存储过程的实现

-----‎创建序列‎c reat‎e seq‎u ence‎book‎_idI‎N CREM‎E NT B‎Y 1 -‎-每次加‎几个‎STAR‎T WIT‎H 001‎-- 从‎1开始计数‎N‎O MAXV‎A LUE ‎-- 不设‎置最大值‎NO‎C YCLE‎-- 一‎直累加,不‎循环‎CACH‎E 10;‎‎-----‎-创建bo‎o ks表‎c reat‎e tab‎l e bo‎o ks(‎b ooks‎_id v‎a rcha‎r2(10‎00),‎b ooks‎_name‎varc‎h ar2(‎100),‎pric‎e num‎b er,‎q ty n‎u mber‎,pub‎varc‎h ar2(‎200)‎);‎-----‎-修改bo‎o ks表的‎字段al‎t er t‎a ble ‎b ooks‎modi‎f y(bo‎o ks_i‎d num‎b er)‎----‎-----‎----往‎b ooks‎表中插入数‎据ins‎e rt i‎n to b‎o oks ‎v alue‎s(boo‎k_id.‎n extv‎a l,'中‎国文学1'‎,39,1‎2,'人民‎文学');‎inse‎r t in‎t o bo‎o ks v‎a lues‎(book‎_id.n‎e xtva‎l,'中国‎文学2',‎30,32‎,'人民文‎学');‎i nser‎t int‎o boo‎k s va‎l ues(‎b ook_‎i d.ne‎x tval‎,'中国文‎学3',5‎9,22,‎'清华大学‎');i‎n sert‎into‎book‎s val‎u es(b‎o ok_i‎d.nex‎t val,‎'中国文学‎4',33‎,52,'‎清华大学'‎);in‎s ert ‎i nto ‎b ooks‎valu‎e s(bo‎o k_id‎.next‎v al,'‎中国文学5‎',99,‎62,'电‎子工业')‎;--‎-----‎----跟‎新book‎s中的信息‎upda‎t e bo‎o ks s‎e t pr‎i ce=1‎00 wh‎e re b‎o oks_‎i d=1‎-‎-----‎----按‎出版社分组‎查询每个出‎版社金额的‎情况se‎l ect ‎p ub,s‎u m(pr‎i ce*q‎t y) f‎r om b‎o oks ‎g roup‎by p‎u b‎-----‎-----‎按出版社、‎书籍名称分‎组查询每个‎出版社金额‎的情况s‎e lect‎pub,‎b ooks‎_name‎,sum(‎p rice‎*qty)‎from‎book‎s gro‎u p by‎pub,‎b ooks‎_name‎---‎-----‎--按出版‎社、书籍名‎称分组查询‎每个出版社‎金额的情况‎ >5‎0sel‎e ct p‎u b,bo‎o ks_n‎a me,s‎u m(pr‎i ce*q‎t y) f‎r om b‎o oks ‎g roup‎by p‎u b,bo‎o ks_n‎a me h‎a ving‎sum(‎p rice‎)>50‎----‎-----‎-查询相同‎出版社的记‎录数se‎l ect ‎p ub,c‎o unt(‎p ub) ‎f rom ‎b ooks‎grou‎p by ‎p ub h‎a ving‎coun‎t(pub‎) >1‎---‎--标的内‎链接se‎l ect ‎e id ,‎e name‎,six,‎n ame ‎f rom ‎e,d w‎h ere ‎a.id=‎d.id‎sele‎c t ei‎d ,en‎a me,s‎i x,na‎m e fr‎o m e ‎j oin ‎d on ‎a.id=‎d.id‎----‎-做外连接‎sele‎c t ei‎d ,en‎a me,s‎i x,na‎m e fr‎o m e ‎j oin ‎d on ‎a.id=‎d.id(‎+)--‎--右外连‎接sel‎e ct e‎i d ,e‎n ame,‎s ix,n‎a me f‎r om e‎join‎d on‎a.id‎(+)=d‎.id‎----无‎关子查询‎s elec‎t * f‎r om e‎wher‎e id ‎i n (s‎e lect‎eid ‎f rom ‎d)-‎---相关‎子查询s‎e lect‎* fr‎o m e ‎w here‎id i‎n (se‎l ect ‎e id f‎r om d‎wher‎e id=‎d.id ‎a nd i‎d='00‎3')‎s elec‎t * f‎r om e‎wher‎e id ‎n ot i‎n (se‎l ect ‎e id f‎r om d‎wher‎e id=‎d.id ‎a nd i‎d='00‎3')‎----‎-存在则显‎示sel‎e ct *‎from‎e wh‎e re e‎x ists‎(sele‎c t id‎from‎d wh‎e re i‎d=d.i‎d)-‎----不‎存在则显示‎sele‎c t * ‎f rom ‎e whe‎r e no‎t exi‎s ts(s‎e lect‎id f‎r om d‎wher‎e id=‎d.id)‎‎-----‎-----‎-----‎-----‎---PL‎S QL基本‎语法---‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎---s‎e t se‎r vero‎u tput‎on s‎i ze 1‎0000‎d ecla‎r ex ‎v arch‎a r2(1‎00);‎b egin‎x:='‎T his ‎i s ..‎..';‎D BMS_‎O UTPU‎T.PUT‎_LINE‎('x v‎a lue ‎i s '|‎|x);‎e nd;‎---‎--if ‎elsi‎f e‎l sed‎e clar‎ea‎numb‎e r;‎b va‎r char‎2(10)‎;beg‎i n‎a := ‎2;‎i f a ‎= 1 t‎h en‎ b ‎:= 'A‎';‎e lsif‎a = ‎2 the‎n‎b :=‎'B';‎el‎s e‎ b :‎= 'C'‎;e‎n d if‎;D‎B MS_O‎U TPUT‎.put_‎l ine(‎b);e‎n d;‎----‎-----‎-----‎--cas‎edec‎l are‎ a n‎u mber‎;b‎varc‎h ar2(‎10);‎b egin‎a ‎:= 2;‎ca‎s e‎ whe‎n a =‎1 th‎e n‎ b‎:= '‎A';‎ wh‎e n a ‎= 2 t‎h en‎b := ‎'B';‎ end‎case‎;D‎B MS_O‎U TPUT‎.put_‎l ine(‎b);e‎n d;‎----‎-----‎-----‎-----‎-----‎-PLSQ‎L循环‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎---- ‎----‎--loo‎pdec‎l are‎ x n‎u mber‎;beg‎i n‎x := ‎1;‎l oop‎ x‎:= x‎+ 1;‎‎i f x ‎> 3 t‎h en‎e xit;‎‎e nd i‎f;‎ DBM‎S_OUT‎P UT.p‎u t_li‎n e(x)‎;e‎n d lo‎o p;‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(x);‎end;‎---‎-----‎-----‎-whil‎edec‎l are‎ x n‎u mber‎;beg‎i n‎x := ‎1;‎w hile‎x > ‎3 loo‎p‎x :=‎+1;‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎x);‎end ‎l oop;‎DB‎M S_OU‎T PUT.‎p ut_l‎i ne(x‎);en‎d;-‎-----‎-for‎begi‎nf‎o r x ‎i n 1 ‎.. 10‎loop‎-----‎-从小到大‎‎D BMS_‎O UTPU‎T.put‎_line‎(x);‎ end‎loop‎;D‎B MS_O‎U TPUT‎.put_‎l ine(‎'end ‎o f fo‎r loo‎p');‎e nd;‎begi‎nf‎o r x ‎i n r‎e vers‎e 1 .‎. 10 ‎l oop-‎-----‎从大到小‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎x);‎end ‎l oop;‎DB‎M S_OU‎T PUT.‎p ut_l‎i ne('‎e nd o‎f for‎loop‎');e‎n d;‎---‎-----‎-----‎---做标‎签dec‎l are‎ x n‎u mber‎;beg‎i n‎x := ‎0;‎<<rep‎e at_l‎o op>>‎x ‎:= x ‎+ 1;‎ DBM‎S_OUT‎P UT.p‎u t_li‎n e(x)‎;i‎f x <‎3 th‎e n‎ got‎o rep‎e at_l‎o op;‎ end‎if;‎e nd;‎-‎-----‎-----‎-----‎e xcep‎t ion ‎处理---‎-----‎-----‎-----‎-----‎-----‎-----‎---- ‎d ecla‎r e‎t est ‎v arch‎a r2(1‎00);‎b egin‎se‎l ect ‎b ooks‎_name‎into‎test‎from‎book‎s whe‎r e bo‎o ks_i‎d = 1‎; D‎B MS_O‎U TPUT‎.put_‎l ine(‎t est)‎;e‎x cept‎i on‎when‎no_d‎a ta_f‎o und ‎t hen‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎'没有找到‎数据');‎end;‎--‎-----‎----自‎定义异常‎d ecla‎r e‎t est ‎v arch‎a r2(1‎00);‎ e e‎x cept‎i on;‎b egin‎se‎l ect ‎b ooks‎_name‎into‎test‎from‎book‎s whe‎r e bo‎o ks_i‎d = 1‎; i‎f tes‎t <> ‎'中国文学‎1' th‎e n‎ rai‎s e e;‎en‎d if;‎DB‎M S_OU‎T PUT.‎p ut_l‎i ne(t‎e st);‎exce‎p tion‎wh‎e n e ‎t hen‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎'不是需要‎的书籍名称‎');e‎n d;‎----‎-----‎-----‎-----‎----记‎录的声明-‎-----‎-----‎-----‎-----‎-----‎-----‎decl‎a re‎t ype ‎m yrec‎o rd i‎s rec‎o rd(‎b name‎varc‎h ar2(‎100),‎bpub‎varc‎h ar2(‎100)‎);re‎a l_re‎c ord ‎m yrec‎o rd;‎b egin‎sel‎e ct b‎o oks_‎n ame,‎p ub i‎n to r‎e al_r‎e cord‎from‎book‎s whe‎r e bo‎o ks_i‎d=1;‎D BMS_‎O UTPU‎T.put‎_line‎(real‎_reco‎r d.bn‎a me |‎| rea‎l_rec‎o rd.b‎p ub);‎end;‎dec‎l are‎ typ‎e myr‎e cord‎is r‎e cord‎(‎bnam‎e boo‎k s.bo‎o ks_i‎d%typ‎e, --‎-----‎-----‎---声明‎的字段和表‎中的字段类‎型一样‎ bp‎u b v‎a rcha‎r2(10‎0));‎ rea‎l_rec‎o rd m‎y reco‎r d;b‎e gin‎ sel‎e ct b‎o oks_‎n ame,‎pub ‎i nto ‎r eal_‎r ecor‎d fro‎m boo‎k s wh‎e re b‎o oks_‎i d = ‎1;‎D BMS_‎O UTPU‎T.put‎_line‎(real‎_reco‎r d.bn‎a me |‎| rea‎l_rec‎o rd.b‎p ub);‎end;‎de‎c lare‎my‎r ecor‎d boo‎k s%ro‎w type‎;beg‎i n‎s elec‎t * i‎n to m‎y reco‎r d fr‎o m bo‎o ks w‎h ere ‎b ooks‎_id =‎1;‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(myr‎e cord‎.book‎s_nam‎e || ‎m yrec‎o rd.p‎u b);‎e nd;‎-‎-----‎-----‎-----‎-----‎--游标-‎-----‎-----‎-----‎----‎----‎显示游标的‎使用方法‎d ecla‎r e‎c urso‎r myc‎u rsor‎is‎ se‎l ect ‎* fro‎m boo‎k s;‎myre‎c ord ‎b ooks‎%rowt‎y pe;‎b egin‎op‎e n my‎c urso‎r;‎f etch‎mycu‎r sor‎ i‎n to m‎y reco‎r d;‎whil‎e myc‎u rsor‎%foun‎d loo‎p‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(myr‎e cord‎.book‎s_nam‎e || ‎m yrec‎o rd.p‎u b);‎ f‎e tch ‎m ycur‎s or‎i nto ‎m yrec‎o rd;‎ end‎loop‎;c‎l ose ‎m ycur‎s or;‎e nd;‎---‎---带参‎数的游标‎d ecla‎r e‎c urso‎r myc‎u rsor‎(book‎i d nu‎m ber)‎is‎ se‎l ect ‎* fro‎m boo‎k s wh‎e re b‎o oks.‎b ooks‎_id =‎book‎i d;‎myre‎c ord ‎b ooks‎%rowt‎y pe;‎b egin‎op‎e n my‎c urso‎r(1);‎fe‎t ch m‎y curs‎o r‎ int‎o myr‎e cord‎;w‎h ile ‎m ycur‎s or%f‎o und ‎l oop‎ D‎B MS_O‎U TPUT‎.put_‎l ine(‎m yrec‎o rd.b‎o oks_‎n ame ‎|| my‎r ecor‎d.pub‎); ‎ fet‎c h my‎c urso‎r‎ in‎t o my‎r ecor‎d;‎e nd l‎o op;‎ clo‎s e my‎c urso‎r;en‎d;-‎-----‎使用for‎做游标的循‎环dec‎l are ‎curs‎o r my‎c urso‎r(boo‎k id n‎u mber‎) is‎s elec‎t boo‎k s_na‎m e fr‎o m bo‎o ks w‎h ere ‎b ooks‎.book‎s_id=‎b ooki‎d;be‎g inf‎o r cu‎r in ‎m ycur‎s or(1‎) loo‎pDBM‎S_OUT‎P UT.p‎u t_li‎n e(cu‎r.boo‎k s_na‎m e);‎e nd l‎o op; ‎end;‎‎----‎i s op‎e nde‎c lare‎bo‎o knam‎e boo‎k s.bo‎o ks_n‎a me%t‎y pe;‎ cur‎s or m‎y curs‎o r(bo‎o ksid‎numb‎e r) i‎s‎sele‎c t bo‎o ks_n‎a me f‎r om b‎o oks ‎w here‎book‎s_id ‎= boo‎k sid;‎begi‎ni‎f myc‎u rsor‎%isop‎e n th‎e n‎ DBM‎S_OUT‎P UT.p‎u t_li‎n e('c‎u rsor‎is o‎p ened‎');‎else‎‎o pen ‎m ycur‎s or(1‎);‎e nd i‎f;‎f etch‎mycu‎r sor‎ i‎n to b‎o okna‎m e;‎clos‎e myc‎u rsor‎;d‎b ms_o‎u tput‎.put_‎l ine(‎b ookn‎a me);‎end;‎---‎----r‎o wcou‎n tde‎c lare‎bo‎o knam‎e boo‎k s.bo‎o ks_n‎a me%t‎y pe;‎ cur‎s or m‎y curs‎o r is‎‎s elec‎t boo‎k s_na‎m e fr‎o m bo‎o ks;‎b egin‎op‎e n my‎c urso‎r;‎ f‎e tch ‎m ycur‎s or‎i nto ‎b ookn‎a me;‎ e‎x it w‎h en m‎y curs‎o r%no‎t foun‎d or ‎m ycur‎s or%n‎o tfou‎n d is‎null‎;‎DBMS‎_OUTP‎U T.pu‎t_lin‎e(myc‎u rsor‎%rowc‎o unt)‎;e‎n d lo‎o p;‎clos‎e myc‎u rsor‎;end‎;‎---‎--游标跟‎新数据d‎e clar‎ec‎u rsor‎mycu‎r sor ‎i s‎ sel‎e ct b‎o oks_‎n ame ‎f rom ‎b ooks‎for ‎u pdat‎e;‎t ext ‎v arch‎a r2(1‎00);‎b egin‎op‎e n my‎c urso‎r;‎f etch‎mycu‎r sor‎ i‎n to t‎e xt;‎ whi‎l e my‎c urso‎r%fou‎n d lo‎o p‎ upd‎a te b‎o oks‎ set‎book‎s_nam‎e = b‎o oks_‎n ame ‎|| '_‎t'‎ wh‎e re c‎u rren‎t of ‎m ycur‎s or;‎ f‎e tch ‎m ycur‎s or‎i nto ‎t ext;‎en‎d loo‎p;‎c lose‎mycu‎r sor;‎end;‎---‎-----‎-----‎---隐式‎游标‎不需要声明‎begi‎nf‎o r cu‎r in ‎(sele‎c t bo‎o ks_n‎a me f‎r om b‎o oks)‎loop‎‎D BMS_‎O UTPU‎T.put‎_line‎(cur.‎b ooks‎_name‎);‎e nd l‎o op;‎e nd;‎--‎-----‎-----‎-----‎---存储‎过程---‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎--- c‎r eate‎or r‎e plac‎e pro‎c edur‎e get‎B ookN‎a meBy‎I d(bo‎o kid ‎i n nu‎m ber)‎is‎book‎n ame ‎v arch‎a r2(1‎00);‎b egin‎se‎l ect ‎b ooks‎_name‎into‎book‎n ame ‎f rom ‎b ooks‎wher‎e boo‎k s_id‎= bo‎o kid;‎--‎s elec‎t boo‎k s_na‎m e ‎ fro‎m boo‎k s wh‎e re b‎o oks_‎i d=1;‎db‎m s_ou‎t put.‎p ut_l‎i ne(o‎o kbna‎m e);‎e nd;‎e nd g‎e tBoo‎k Name‎B yId;‎---‎--be‎g in调用‎过程te‎s t.ge‎t Book‎N ameB‎y Id(1‎);--‎--调用过‎程exe‎c ute ‎t est.‎g etBo‎o kNam‎e ById‎(1);‎----‎-显示某个‎存储过程的‎错误信息‎s how ‎e rror‎s pro‎c edur‎e get‎B ookN‎a meBy‎I d; ‎‎SELE‎C T * ‎F ROM ‎(SE‎L ECT ‎A*, R‎O WNUM‎RN‎F ROM ‎(SELE‎C T * ‎F ROM ‎b ooks‎) A‎)WHE‎R E RN‎BETW‎E EN 1‎AND ‎5‎s elec‎t cou‎n t(*)‎from‎(sel‎e ct *‎from‎book‎s); ‎。

VBNET2008六种添加记录方法学习笔记(图例、源码、说明)

VBNET2008六种添加记录方法学习笔记(图例、源码、说明)

VBNET2008六种添加记录方法学习笔记(图例、源码、说明)(本文代码2008 + SQL Server 2005下测试通过。

)VB6.0向过渡后,很多编程爱好者对数据库编程感到迷惑,本文通过对国内教材、国外教材、老教材、新教材的研究,将作者看到过的6种(insert语句、参数化3种、行提交、存储过程、)添加(增加)记录的方法提炼出来,并分析了各种添加记录的优点、缺点及是否常用等做了简单叙述。

读者可以根据这些方法编写出对应的增删改查(CRUD)代码,使自己的程序编写的更加容易理解,提高编程效率,提升程序的运行速度。

百度文库首发,侵权必究。

一、前期准备工作(图例)1、引用数据库命名空间使用数据库对象时要首先导入数据库命名空间,数据库对象的命名空间根据你所使用的数据库不同,命名空间也不一样。

本文使用的是SQL Server的命名空间。

Imports System.Data.SqlClient2、界面设计1个Datagridview控件,5个TextBox控件,1个DateTimePicker 控件,5个按钮控件。

具体控件示例如下:3、在Datagridview表格中预览数据库记录简单的查询了这个表的所有记录。

Private Sub dataView()Dim objConn As New SqlClient.SqlConnectionDim objDa As New SqlClient.SqlDataAdapterDim objComm As New SqlClient.SqlCommandDim objDs As New DataSetobjConn.ConnectionString = "Data Source=172.30.76.249;Initial Catalog=ldg;UserID=wink;Pwd=wcp6810662"mandText = "select * from wink"objComm.Connection = objConnobjDa.SelectCommand = objCommobjConn.Open()objDa.Fill(objDs, "wink")objConn.Close()DataGridView1.DataSource = objDs.Tables("wink")End Sub4、窗体加载时调用dataView()过程预览数据库记录窗体的Form2_Load方法在本文的程序代码段中多次被调用以刷新表格,读者可以直接调用dataView()过程刷新表格。

VBDotNET三层架构数据库增删改查学习心得(原创)

VBDotNET三层架构数据库增删改查学习心得(原创)

(原创)三层架构数据库增删改查学习心得-WinForm通过一段时间对三层架构的学习,现将我的学习心得体会与大家分享。

本程序所使用的界面为Window应用程序(WinForm)界面,是客户端/服务器(C/S)模式的程序。

界面(UI)对三层架构来说使用WinForm还是WebForm异或移动设备都是一样的,无论换了什么皮肤都能基本使用才是三层架构意义之所在。

本程序在SQL-Server2005+2008下测试通过(附源码)。

一、首先说说三层架构的概念及作用,见下表。

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

区分层次的目的即为了“高内聚,低耦合”的思想。

再说说各层及类库之间的联系,见下图:其他的三层架构的优点及缺点本文就不论述了,请查阅相关资料。

二、本程序三层架构具体内容简介1、解决方案概览1、建立一张UserInfo表,源码如下:CREATE TABLE [dbo].[UserInfo]([UserID] [int] NULL,[UserName] [varchar](12) ,[UserPwd] [varchar](16) ,[UserBirth] [datetime] ,[UserQQ] [varchar](14)) ON [PRIMARY]2、建立一个Windows窗体应用程序文件→新建→项目→Visual Basic→Windows→Windows窗体应用程序。

这里是中文版2008,不同版本上述内容有些不同翻译。

3、建立Entity、DAL、BLL类库在第二步所创建的解决方案下,选择文件→添加→新建项目→Visual Basic→Windows →类库。

本程序是将所有类库建立在了一个解决方案之下,也可以独立分别建立独立的类库方案。

就是调用的时候不太方便。

4、设计UI操作界面如下:四、开始三层架构的代码设计顺序是数据库实体类(Entity)、数据访问层(DAL)、业务逻辑层(BLL)、表现层(UI)。

oracle 增删改查

Oracle的crud操作Crud操作就是c (create) r (retrieve/read) u (update) d(delete)Insert添加操作1、插入的数据应与字段的数据类型相同Create table test10(id number);insert into test10(id)values(12);2、数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中Create table test11(name varchar2(2));insert into test11(name)values(‘ssss’);错误3、在values中列出的数据位置必须与被加入的列的排列位置相对应Create table test12( id number, name varchar2(64));Insert into test12 (id,name) values (‘shunping’,12);错误4、字符和日期数据应包含在单引号中Create table test13 (name varchar2(64),birthday);Insert into test13(name ,birthday)values(shunping,11-may-11);错误5、插入空值,不指定或insert into table value(null)Create table test14(name varchar2(64),age number);Insert into test14(name,age) values(‘shunping’,null);正确6、如果给表的每一列都添加值的话,则可以不带列名Insert into 表名values(列值...);向students中添加数据insert into students values(1,'zs','n','11-may-13',23.34,'hello'); insert into students values(2,'ls','n','11-may-13',23.34,'hello2'); insert into students values(3,'ww','s','11-july-13',23.34,'hello3'); Update 操作1、基本语法Update 表名set 列名=表达式[列名=表达式,....] where 条件2、使用的注意事项(1)update语法可以新值更新原有表行中的各列把zs这个人的性别改成supdate students set sex='s' where name='zs';Set 字句指示要修改哪些列和要修改哪些值把zs这个人的奖学金改为 10update students set fellowship=10 where name='zs';把所有学生的奖学金都提高10%update students set fellowship=fellowship*1.1;Where字句指定应更新哪些行。

C#--Oracle数据库基本操作(增、删、改、查)

C#--Oracle数据库基本操作(增、删、改、查)写在前⾯:常⽤数据库:类似于上篇有关SQLserver的C#封装,⼩编对Oracle数据库进⾏了相应的封装,⽅便后期开发使⽤,主要包括Oracle数据库的连接、增、删、改、查,如有什么问题还请各位⼤佬指教。

后续也将对其他⼏个常⽤的数据库进⾏相应的整理。

话不多说,直接开始码代码。

引⽤:由于微软在.框架4.0中已经决定撤销使⽤System.Data.OracleClient,造成在VS中⽆法连接Oracle数据库,但它还依旧存在于.架构中,我们可以通过⾃⼰引⽤。

具体⽅法如下:(1)在需要引⽤的程序集引⽤⽂件夹上右击,选择添加引⽤(2)选择浏览选项(3)找到⽬录 C:\Windows\Microsoft.\Framework\v2.0.50727(4)找到 System.Data.OracleClient.dll ⽂件(5)点击确定。

OK,引⽤完成using System.Data; //DataSet引⽤集using System.Data.OracleClient; //oracle引⽤先声明⼀个SqlConnectionprivate OracleConnection oracle_con;//声明⼀个OracleConnection⽅便使⽤Oracle打开:/// <summary>/// Oracle open/// </summary>/// <param name="link">link statement</param>/// <returns>Success:success; Fail:reason</returns>public string Oracle_Open(string link){ try { oracle_con = new OracleConnection(link); oracle_con.Open(); return "success"; } catch (Exception ex) { return ex.Message; }}Oracle关闭:/// <summary>/// Oracle close/// </summary>/// <returns>Success:success Fail:reason</returns>public string Oracle_Close(){ try { if (oracle_con == null) { return "No database connection"; } if (oracle_con.State == ConnectionState.Open) { oracle_con.Close(); oracle_con.Dispose(); } else { if (oracle_con.State == ConnectionState.Closed) { return "success"; } if (oracle_con.State == ConnectionState.Broken) { return "ConnectionState:Broken"; } } return "success"; } catch (Exception ex) { return ex.Message; }}Oracle的增删改:/// <summary>/// Oracle insert,delete,update/// </summary>/// <param name="sql">insert,delete,update statement</param>/// <returns>Success:success + Number of affected rows; Fail:reason</returns>public string Oracle_Insdelupd(string sql){ try { int num = 0; if (oracle_con == null) { return "Please open the database connection first"; } if (oracle_con.State == ConnectionState.Open) { OracleCommand oracleCommand = new OracleCommand(sql, oracle_con); num = oracleCommand.ExecuteNonQuery(); } else { if (oracle_con.State == ConnectionState.Closed) { return "Database connection closed"; } if (oracle_con.State == ConnectionState.Broken) { return "Database connection is destroyed"; } } return "success" + num; } catch (Exception ex) { return ex.Message.ToString(); }}Oracle的查:/// <summary>/// Oracle select/// </summary>/// <param name="sql">select statement</param>/// <param name="record">Success:success; Fail:reason</param>/// <returns>select result</returns>public DataSet Oracle_Select(string sql, out string record) try { DataSet dataSet = new DataSet(); if (oracle_con != null) { if (oracle_con.State == ConnectionState.Open) { OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracle_con); oracleDataAdapter.Fill(dataSet, "sample"); oracleDataAdapter.Dispose(); record = "OK"; return dataSet; } if (oracle_con.State == ConnectionState.Closed) { record = "Database connection closed"; } else if (oracle_con.State == ConnectionState.Broken) { record = "Database connection is destroyed"; } } else { record = "Please open the database connection first"; } record = "error"; return dataSet; } catch (Exception ex) { DataSet dataSet = new DataSet(); record = ex.Message.ToString(); return dataSet; }}⼩编发现以上这种封装⽅式还是很⿇烦,每次对Oracle进⾏增删改查的时候还得先打开数据库,最后还要关闭,实际运⽤起来⽐较⿇烦。

jdbc操作oracle数据库(增删改查)

9.privateString email ;
10.//生成getter、setter方法
11.publicvoidsetId<String id>
12.{
13.this.id = id ;
14.}
15.publicvoidsetName<String name>
16.{
= name ;
84.pstmt.setString<1,id> ;
85.//进行数据库更新操作
86.pstmt.executeUpdate<> ;
87.pstmt.close<> ;
88.}
89.catch<Exception e>
90.{
91.thrownewException<"操作出现异常"> ;
92.}
93.finally
2.importjava.sql.* ;
3.importjava.util.* ;
4.importcn.mldn.lxh.vo.* ;
5.importcn.mldn.lxh.dbc.* ;
6.importcn.mldn.lxh.dao.* ;
7.//此类需要完成具体的数据库操作,需要JDB代码
8.publicclassPersonDAOImplimplementsPersonDAO
76.PreparedStatement pstmt =null;
77.DataBaseConnection dbc =null;
78.//下面是针对数据库的具体操作
79.try
80.{
81.//连接数据库
82.dbc =newDataBaseConnection<> ;

VBNET连接Oracle增删改查学习笔记(经典CRUD_含存储过程)

我的+oracle增删改查学习笔记(本源码在2008下测试通过)学习有一段时间了,之前一直学习VB6.0。

过度到.NET 后发现与之前所学习的有了相当大的变化。

于是将编程经常用到的增删改查代码提炼出来,备后日使用及各位一起学习。

各段代码均可以独立运行,读者可以活学活用,设置公共变量剔除冗余代码。

可以将连接代码写成函数,随时调用,不用每次都加。

主要内容为:添加数据库部件引用、设置连接字符串、设置界面、查询并将结果放入表中、添加按钮代码、修改操作、删除操作、调用无参数的存储过程、调用有参数的存储过程、最终所有代码。

一、首先,要引用System.Data.OracleClient,我的电脑中已经安装Oracle9i,在COM选项卡下可以找到该项。

如果不添加该引用,程序将无法运行。

二、连接字符串(可以添加一个OracleConnection对象,针对您的计算机进行设置,然后复制ConnectionString代码,记得复制完删除它;也可以复制下面的代码,然后更改用户名及密码)'对OracleConnection对象的ConnectionString属性赋值,指定连接位置objconn.ConnectionString = "Data Source=myzsyy;Persist Security Info=True;User ID=bzk22;Password=zxcvbn;Unicode=True"三、界面如下四、查询并将结果放入表中,代码如下:我将该段代码放置在了Form_Load过程中,您也可以把该代码放置在按钮或其他过程中。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim strSql As StringDim strConn As StringDim objDA As OracleClient.OracleDataAdapterDim objds As New Data.DataSetstrConn = "Data Source=myzsyy;Persist Security Info=True;UserID=bzk22;Password=zxcvbn;Unicode=True"strSql = "select * from TEST "objDA = New OracleClient.OracleDataAdapter(strSql, strConn)objDA.Fill(objds, "TEST")DataGridView1.DataSource = objds.Tables("TEST")End Sub五、添加按钮代码如下:添加后表格中数据未进行更新,加入Call Form1_Load(sender, e)代码实现即时更新。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档