




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用SQL Server2000的JDBC驱动程序连接SQL Server2000一、SQLServer2000数据库服务器(1)启动SQLServer2000数据库服务器(2)设置用户“sa”的密码输入密码为“6407”。二、连接方式(一)、命令行方式1、将SQL Server2000的JDBC驱动程序拷贝到某一路径下(如:C: j2sdk1.4.0lib)msbase.jar、mssqlserver.jar、msutil.jar2、在系统环境变量中加人对上述三个文件的路径说明path=c:j2sdk1.4.0bin;set classpath=.;C:j2sdk1.4.0libmsbase.jar;C:j2sdk1.4.0libmssqlserver.jar;C:j2sdk1.4.0libmsutil.jar;3、编写连接数据库的URL地址String url=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=pubs;String DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver;4、程序代码为:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class SqlServerJdbc extends JFrame implements WindowListener String columnNames = ;Object dataRows;/*连接oracle数据库时String url=jdbc:oracle:thin:10.172.0.107:1521:DBName;String DBDriver = oracle.jdbc.driver.OracleDriver;*/* 连接SqlServer数据库时,数据库在远程主机时String url=jdbc:microsoft:sqlserver:/10.172.0.105:1433;DatabaseName=pubs;数据库在本地主机时(中文版的SQLServer的端口号为1433,而英文版的SQLServer的端口号为1036)String url=jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=pubs;*/String url=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=pubs;String DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver;Connection con=null;Statement stmt=null;PreparedStatement pstmt=null;ResultSet rs=null;ResultSetMetaData metaData;public SqlServerJdbc(String windowTitle)super(windowTitle);int FrameWidth=600,FrameHeight=400;this.setSize(FrameWidth,FrameHeight);this.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width-FrameWidth)/2, (Toolkit.getDefaultToolkit().getScreenSize().height-FrameHeight)/2);this.addWindowListener(this);JPanel contentPanel=new JPanel();contentPanel.setLayout(new BorderLayout();this.setContentPane(contentPanel);tryClass.forName(DBDriver);catch(ClassNotFoundException e)System.out.println(不能正确地加载驱动程序);trycon=DriverManager.getConnection(url,sa,);catch(SQLException e)trystmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); rs=stmt.executeQuery(select * from authors);metaData=rs.getMetaData(); int numberOfColumns = metaData.getColumnCount(); columnNames = new StringnumberOfColumns; for(int column = 0; column numberOfColumns; column+)columnNamescolumn = metaData.getColumnLabel(column+1); int rowCounter=0; if(rs.last() rowCounter=rs.getRow(); rs.beforeFirst(); /将记录指针回退到最开始处,此时必须将Cursor设置为可回滚 dataRows=new ObjectrowCounternumberOfColumns; int loopRowCounter=0; while(rs.next() for(int column = 0; column numberOfColumns; column+) dataRowsloopRowCountercolumn=rs.getObject(column+1); loopRowCounter+; rs.close(); catch(SQLException e) System.out.println(SQLState:+e.getSQLState(); System.out.println(Messager:+e.getMessage(); System.out.println(Vendor:+e.getErrorCode(); JTable table=new JTable(dataRows,columnNames);JScrollPane jsp=new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);contentPanel.add(jsp,BorderLayout.CENTER);public static void main(String args)SqlServerJdbc mainframe=new SqlServerJdbc(利用JDBC SQLServer2000的驱动程序连接SQLServer2000数据库);mainframe.show();public void windowOpened(WindowEvent parm1) / TODO: Add your code herepublic void windowClosing(WindowEvent parm1) trycon.close();catch(SQLException e)this.dispose();System.exit(0);public void windowClosed(WindowEvent parm1) / TODO: Add your code herepublic void windowIconified(WindowEvent parm1) / TODO: Add your code herepublic void windowDeiconified(WindowEvent parm1) / TODO: Add your code herepublic void windowActivated(WindowEvent parm1) / TODO: Add your code herepublic void windowDeactivated(WindowEvent parm1) / TODO: Add your code here5、执行该程序注意:执行过程中如果出现如下错误,应该修改注册表中的版本号,将1.3修改为1.4。(二)、在JCreator中实现(1)编程访问数据库的程序(2)将SQL Server2000的JDBC驱动程序加入到JCreator的环境变量中(选择Configuration菜单,然后再Option子菜单)(3)选择“编辑”按钮,然后(3)再点击“Add”按钮,并选择Add Package项目。然后将将SQL Server2000的JDBC驱动程序的三个*.jar文件分别加入到JCreator环境中。(4)再点击“打开”按钮(5)再点击“OK”按钮(6)再编译和执行该程序调用SQLServer2000数据库中的存储过程1、存储过程概述(1)存储过程存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用接口执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。它可以把复杂的查询与客户端隔离。(2)使用存储过程的优点l 可以在单个存储过程中执行一系列 SQL 语句,允许模块化设计并且可以使用参数输入和输出。l 可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。l 存储过程在创建时即在服务器上进行编译(存储过程被定义以后,将成为数据库的一部分,显示为数据库对象),所以执行起来比单个 SQL 语句快。比在Java程序中使用和发送SQL 语句来操作数据库的速度要快得多。l 存储过程还具有更好的安全性,它可以包装业务逻辑,对应用层隐蔽数据库结构的改变。l 当然,使用存储过程也可以大大简化客户应用程序的编写。因为存储过程运行在DBMS自身,这可以帮助减少应用程序中的等待时间。不是在Java代码中执行4个或5个SQL语句,而只需要在服务器端执行1个存储过程。网络上的数据往返次数的减少可以戏剧性地优化性能。(3)创建存储过程时所应该指定的元素l 所有输入参数和向调用过程或批处理返回的输出参数。l 执行数据库操作(包括调用其它过程)的编程语句。l 返回至调用过程或批处理以表明成功或失败(以及失败原因)的状态值2、存储过程的基本语法(1)语法格式CREATE PROCEDURE procedure_name ; number parameter data_type VARYING = default OUTPUT ,.n WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION FOR REPLICATION AS sql_statement .n (2)其中的符号的含义:l procedure_name:新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。l number:是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 语句将除去整个组。l parameter:过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。使用 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。 l data_type:参数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。l VARYING:指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。l Default:参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、 和 )。l OUTPUT:表明参数是返回参数,使用 OUTPUT 参数可将信息返回给调用过程。l AS:指定过程要执行的操作。l sql_statement:过程中要包含的任意数目和类型的 SQL 语句。(3)存储过程示例l 不带参数的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数CREATE PROCEDURE au_info_allASSELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idl 带参数的存储过程下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程接受与传递的参数精确匹配的值。CREATE PROCEDURE au_info lastname varchar(40), firstname varchar(20) AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname = firstname AND au_lname = lastnamel 使用带有通配符参数的存储过程下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则使用预设的默认值。CREATE PROCEDURE au_info2 lastname varchar(30) = D%, firstname varchar(18) = %AS SELECT au_lname, au_fname, title, pub_nameFROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idWHERE au_fname LIKE firstname AND au_lname LIKE lastnamel 使用OUTPUT 参数为存储过程提供返回参数CREATE PROCEDURE titles_sum TITLE varchar(40) = %, SUM money OUTPUTASSELECT Title Name = titleFROM titles WHERE title LIKE TITLE SELECT SUM = SUM(price)FROM titlesWHERE title LIKE TITLE3、设计存储过程(1)启动企业管理器(2)在企业管理器工具中展开pubs数据库(3)右击pubs数据库中的“存储过程”节点,点击“新建存储过程”菜单项目(4)编写存储过程语句,将如下的存储过程语句拷贝到编辑框内CR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025秋统编版三年级语文上册(2024)新教材第八单元《习作:那次经历真难忘》练习题附答案
- 药剂性能优化工艺考核试卷及答案
- 金属雕刻工艺创新平台建设考核试卷及答案
- 飞机蒙皮落压钣金工三级安全教育(公司级)考核试卷及答案
- 动车组维修师协同作业考核试卷及答案
- 2024新版2025秋青岛版科学六三制三年级上册教学课件:第三单元 第13课 瘪的乒乓球鼓起来了
- 产教融合背景下现代产业学院探索与实践
- 信息技术知识试题及答案
- 工厂安全风险控制与设备作业安全知识试卷
- 员工分红协议书
- 保温拆除施工方案
- 施工交通安全教育
- Unit 2 What's interesting about families(说课稿)-2024-2025学年沪教版(2024)英语三年级上册
- 上海市第一至十八届高一物理基础知识竞赛试题及答案
- 十二指肠恶性肿瘤护理查房
- 【MOOC】《医学心理学》(北京大学)章节期末中国大学慕课答案
- 《国际跳棋教学》课件
- 食品进货与供货商档案相对应制度模版(3篇)
- 防治血吸虫病主题班队课
- 12SG121-1 施工图结构设计总说明
- NB-T31053-2014风电机组低电压穿越建模及验证方法
评论
0/150
提交评论