JAVA数据库查询操作(JDBC)

今天在公司尝试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();
			}
		}
	}
}
JAVA数据库查询操作(JDBC)_第1张图片

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

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,所以才能正常运行。

你可能感兴趣的:(JAVA研究)