JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
1.配置SQL Server:开始 > Microsoft SQL Server2008 > SQL Server 配置管理器 > SQL Server 网络配置 > SQLEXPRESS 的协议 > TCP/IP
TCP/IP配置:修改IP是“127.0.0.1”的一项和IPAll的一项,修改完成后确定开启TCP/IP
2.在SQL Server2中创建数据库MyHotel,建立相关表
3.Eclipse中代码如下:
1 import java.sql.*; 2 3 class GetCon { 4 Connection con; 5 //得到连接好数据库MyHotel的Connection 6 public Connection getCon() { 7 try { 8 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 9 }catch (ClassNotFoundException e) { 10 System.out.println(e); 11 } 12 try { 13 String url = "jdbc:sqlserver://127.0.0.1:1433;DateBaseName= MyHotel "; 14 String saName = "sa"; 15 String saPw = "123"; 16 con = DriverManager.getConnection(url,saName,saPw); 17 } catch (SQLException e) { 18 System.out.println(e); 19 } 20 return con; 21 } 22 } 23 24 public class Test1 { 25 public static void main(String[] args) { 26 GetCon gc = new GetCon(); 27 Connection con; 28 Statement sql; 29 ResultSet rs; 30 try { 31 con = gc.getCon(); 32 sql = con.createStatement(); 33 //查询数据库MyHotel中Hotel表中迪拜帆船酒店单人间的价格 34 rs = sql.executeQuery("select Price from Hotel " 35 + "where Hname = ‘迪拜帆船酒店‘ and Rmtype = ‘单人间‘"); 36 if (rs.next()) { 37 System.out.println(rs.getString("Price")); 38 } 39 } catch (SQLException e) { 40 e.printStackTrace(); 41 } 42 } 43 }
#错误总结#
1.未引入sqljdbc4.0报错:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
java.sql.SQLException: No suitable driver found for jdbc:sqlserver://127.0.0.1:1433;DateBaseName= MyHotel
Exception in thread "main" java.lang.NullPointerException
at Test1.main(Test1.java:32)
解决方法:TestHotel(创建的java项目)> Properties > Java Build Path > Add External JARs... > 选择下载好的sqljdbc4.jar > OK
2.未设置默认数据库
com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 ‘Hotel‘ 无效。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616)
at Test1.main(Test1.java:34)
解决方法1:在所用表Hotel前加MyHotel..(注意是两个点!!)即“ 数据库+ .. +表名 ”
解决方法2:修改默认数据库,在SQL Server中选择连接时使用的登录名(我的是sa) sa > 属性 > 常规 > 默认数据库 > 选择需要的数据库(我的是MyHotel)