您的位置:首页 > 编程语言 > Java开发

JAVA数据库查询操作(JDBC)

2016-07-27 11:05 441 查看
今天在公司尝试JDBC。练习过程中遇到了很多问题。特贴出来以供参考。

编译器:Eclipse Mars.1和sql server 2008。

过程:

       先贴出代码和表:

package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Jdbc
{
private static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=StudentScore";
private static String user = "sa";
private static String password = "123456";
public static void main(String[] args)
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
String sql = "SELECT sNo,sName,sex,age FROM "
+ "Student WHERE dept = '计算机'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
String no = rs.getString("sNo");
String name = rs.getString("sName");
String sex = rs.getString("sex");
int age = rs.getInt("age");
System.out.println(no + " " + name + " " + sex + "   " + age);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}



        参考书上的代码和网上教程,在

http://www.microsoft.com/downloads/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displayLang=zh-cn

下载驱动后,把Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\auth\x64\sqljdbc_auth.dll放在了C:\Windows\SysWOW64里面,并在环境变量classpath中添加了sqljdbc4.jar的地址。然而在Eclipse上运行后抛出异常,异常提示为com.jdbc.odbc.JdbcOdbcDriver,异常代码段为Class.forName(driver);。经查证,原来是混淆了Access和SQL
Server驱动程序类。改为com.microsoft.sqlserver.jdbc.SQLServerDriver后,出现了端口号1433#无效。在网上百度后发现端口号后面是不要加#号的,然而对比书上的提示:jdbc:sqlserver//hostname:port#;DatabaseName=dbname,可能是我误解了书上的意思。解决这个问题后再次运行,错误提示为用户无法登录。原因在于无法使用windows身份验证,设置为SQL Server身份验证,也就是初始账户密码sa,123456之后,提示dept有问题。原来是编写数据库语言的不细心导致的。内容如下:
String sql = "SELECT sNo,sName,sex,age FROM"
+ "Student WHERE dept = '计算机'";

在FROM" + "Student这一段中,SQL语言在这段的显示会是FROMStudent,中间是没有空格的,所以要在FROM后面或者Student的前面加入空格。解决完这个问题后结果终于显示出来了。再反思之前的问题,我尝试删除项目中的sqljdbc4.jar包,并且删除原先配置的环境变量,然而再次运行结果还是完美显示了出来,重启后也是这样,让我怀疑Eclipse
Mars.1版本是自带jdbc驱动的。这个问题的原因目前不知道。最后是结果图。欢迎指证~~


7月28日修改:原因已找到,原项目中的JRE System Library中存在sqljdbc4-4.0.jar,所以才能正常运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: