Java数据库程序设计

实验 Java数据库程序设计

、实验目的

1. 掌握创建数据库应用程序的各个重要环节;

2. 掌握使用JDBC API提供的接口和类进行连接SQL Server数据库,执行SQL语句,处理结果集等操作方法。

 

、知识准备

前期要求掌握的知识:了解结构化查询语言SQL的相关内容。

实验相关理论或原理: Java语言提供了对数据库的强大支持,Java语言提供JDBC来实现对数据库访问和数据处理的支持。利用JDBC来访问特定的数据库,实现对数据库的各种操作。具体有7步:

  1. 导入JDBC类;
  2. 装载/注册驱动程序;
  3. 连接数据库;
  4. 创建语句对象;
  5. 执行SQL语句;
  6. 处理结果;
  7. 关闭连接。

 

  • 下载驱动及配置

(以SQL SERVER数据库为例,若是其它数据库,则采用相应的驱动程序;驱动方式采用纯JAVA程序驱动,若采用其它模式,则程序中语句相应要进行调整)

1. 使用纯Java驱动,首先必须获得相应数据库的驱动程序包;

SQLServer JDBC驱动包有两种:sqljdbc.jar和sqljdbc4.jar,根据所使用的JDK版本选择相应的驱动程序。并将完整路径设置到classpath环境变量中,如用开发工具开发程序,还需在开发环境中设置路径。

将sqljdbc4.jar类库文件拷贝到D:\Program Files\Java\jdk1.7.0\jre\lib\ext目录下。(这个路径根据JDK的版本和安装路径确定,下同) 

   

 

 

将sqljdbc4.jar类库文件拷贝到D:\Program Files\Java\jre7\lib\ext目录下( 最好是,只要是jre文件夹,都复制一个sqljdbc4.jar到jre7\lib\ext里去!!


在环境变量classpath 后面添加sqljdbc4.jar的路径。
2. 设置SQLEXPRESS服务器:
    a.打开SQL Server Configuration Manager -> SQLEXPRESS的协议 -> TCP/IP

    b.右键单击启动TCP/IP

    c.双击进入属性,把IP地址中的IP all中的TCP端口设置为1433

d.重新启动SQL Server 2005服务中的SQLEXPRESS服务器

附加:找到“打开或关闭windows功能”,启动Telnet客户端

e.关闭SQL Server Configuration Manager

注:可以在命令行窗口中用如下命令查看1433端口是否打开:

Telnet localhost 1433

若执行命令后,窗口左上角有光标闪烁,无其它提示信息,则说明端口已打开。

 

四、实验内容

PART 1  基础实验

验证性实验1

运行如下Java程序,学会JAVA连接数据库的方法。注意:程序中红色字体的内容,可以根据实际情况设置。

import java.sql.*;

public class Test {

public static void main(String[] srg) {

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

//加载JDBC驱动

String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sc";

//连接服务器和数据库

String userName = "sa"; //默认用户名

String userPwd = "12345678"; //密码

Connection dbConn;

try {

   Class.forName(driverName);

   dbConn = DriverManager.getConnection(dbURL, userName, userPwd);

   System.out.println("Connection Successful!");

     //如果连接成功 控制台输出Connection  Successful!

} catch (Exception e) {

   e.printStackTrace();

}

}

}

 

验证性实验2

运行如下程序,该程序的功能是将学生表中所有记录的第一个字段信息显示出来。

  import java.sql.*;

 

public class ex1 {

 public static void main(String []args){

    System.out.println("database example:");

   Connection conn = null;

      Statement stmt = null;

  try{

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

     String url="jdbc:sqlserver://localhost:1433; DatabaseName=sc";    

     String user="sa";

     String password="12345678"; // 用户名和密码;

     conn= DriverManager.getConnection(url,user,password);

     stmt=conn.createStatement();

     String sql = "select * from student";

     ResultSet rs = stmt.executeQuery(sql);

     while(rs.next())

     {

      System.out.println(rs.getString(1));

     }  

  }catch(Exception ex){

   System.out.println(ex.toString());

  }

  finally{

   if(stmt!=null){

    try{

      stmt.close();

    }catch(Exception ex){}    

   }

   if(conn!=null){

    try{

     conn.close();

    }catch(Exception ex){}    

   }    

  }

  System.out.println("End");

 }

}

 

设计性实验

在上述程序的基础上,自己编写程序,实现如下功能:

  1.  查询student表中所有的数据,并在控制台显示出来,一行显示一个学生的信息。

package ch1;

import java.sql.*;

 

public class test {

public static void main(String []args){

   System.out.println("database example:");

  Connection conn = null;

     Statement stmt = null;

 try{

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    String url="jdbc:sqlserver://localhost:1433; DatabaseName=sc";    

    String user="sa";

    String password="12345678"; // 用户名和密码;

    conn= DriverManager.getConnection(url,user,password);

    stmt=conn.createStatement();

    String sql = "select * from student ";

    ResultSet rs = stmt.executeQuery(sql);

    while(rs.next())

    {

     System.out.print(rs.getString(1)+" ");

     System.out.print(rs.getString(2)+" ");

     System.out.print(rs.getString(3)+"  ");

     System.out.print(rs.getString(4)+"  ");

     System.out.print(rs.getString(5)+"  ");

     System.out.println();

    }  

 }catch(Exception ex){

  System.out.println(ex.toString());

 }

 finally{

  if(stmt!=null){

   try{

     stmt.close();

   }catch(Exception ex){}    

  }

  if(conn!=null){

   try{

    conn.close();

   }catch(Exception ex){}    

  }    

 }

 System.out.println("End");

}

}

  1.  输入一个学号,如果该学号信息存在,则显示出该学号对应的学生的基本信息,包括学号,姓名,性别,年龄等,以及该学生所选修的课程名称,成绩;若没有该学号对应的信息存在,则输出简单的提示信息。

import java.sql.*;

import java.util.Scanner;

public class Test {

public static void main(String []args){

   System.out.println("database example:");

  Connection conn = null;

     Statement stmt = null;

 try{

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    String url="jdbc:sqlserver://localhost:1433; DatabaseName=st";    

    String user="sa";

    String password="12345678"; // 用户名和密码;

    conn= DriverManager.getConnection(url,user,password);

    stmt=conn.createStatement();

    int X=0;

    Scanner x=new Scanner(System.in);

    X=x.nextInt();

    String sql = "select * from student,sc,course where Student.sno=sc.sno and Course.cno=Sc.cno";

    ResultSet rs = stmt.executeQuery(sql);

    while(rs.next())  

    {int i=1;  

     if(X==rs.getInt(i)) {   

         for(i=1;i<=12;i++) {                  

     System.out.print(rs.getString(i)+"\t");  

         }  

     System.out.println();  

     }  

    }  

}  

 catch(Exception ex){

  System.out.println(ex.toString());

 }

 finally{

  if(stmt!=null){

   try{

     stmt.close();

   }catch(Exception ex){}    

  }

  if(conn!=null){

   try{

    conn.close();

   }catch(Exception ex){}    

  }    

 }

 System.out.println("End");

}

}

  1. 输入一个学生的信息,包括学号,姓名,性别,年龄,所在系部等,首先判断学生表student中是否有相同学号的记录存在,如果有,给出提示;如果没有,则将输入的信息作为一条记录插入到学生表student中。

package ch1;

/*3.输入一个学生的信息,包括学号,姓名,性别,年龄,所在系部等,首先判断学生表student中是否有相同学号的记录存在,

 * 如果有,给出提示;如果没有,则将输入的信息作为一条记录插入到学生表student中。

 */

import java.sql.*;

import java.io.*;

public class Test {

public static void main(String []args){

   System.out.println("database example:");

  Connection conn = null;

     Statement stmt = null;

 try{

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    String url="jdbc:sqlserver://localhost:1433; DatabaseName=sc";    

    String user="sa";

    String password="12345678"; // 用户名和密码;

    conn= DriverManager.getConnection(url,user,password);

    stmt=conn.createStatement();

    String S;

    BufferedReader s=new BufferedReader(new InputStreamReader(System.in));

    S=s.readLine();

    String sql = "select sno from student";

    ResultSet rs = stmt.executeQuery(sql);

    while(rs.next())  

    {int i=1;  

     if(S==rs.getInt(i)) {   

         for(i=1;i<=12;i++) {                  

     System.out.print(rs.getString(i)+"\t");  

         }  

     System.out.println();  

     }  

    }  

}  

 catch(Exception ex){

  System.out.println(ex.toString());

 }

 finally{

  if(stmt!=null){

   try{

     stmt.close();

   }catch(Exception ex){}    

  }

  if(conn!=null){

   try{

    conn.close();

   }catch(Exception ex){}    

  }    

 }

 System.out.println("End");

}

}

Part 2 窗口程序设计

  1. 在数据库中新建一个表,存放用户登陆信息,字段包括用户名,密码。建议表名为userinfo,字段名为username和passowrd。并在该表中插入若干条记录。

 

  1. 设计一个登陆窗口,用户输入登录名及密码,如果在userinfo表中能够找到对应的信息,则提示“登陆成功!”; 否则根据具体情况给出“无该用户存在”或“密码输入错误”等提示,如果三次登陆都失败,则关闭该程序。

 

  1. 仿照如下窗体,设计一个与学生表student实际属性相吻合的窗体,在各个文本框中输入对应属性的值,点击添加按钮,如果无数据冲突,则将输入信息插入到表student中;如果有数据冲突,则给出相应的提示。

4. 对第2步中的登陆程序进行修改,如果登陆成功,则显示出第3步的窗口,进行数据添加工作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯子佳人傻了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值