最近在做JAVA的项目,我们要做一个简易备忘录,使用java语言,用Netbeans设计界面和添加代码,使用SQL作为数据库,但在怎么连接数据库方面,真的很混乱。
NetBeans的学习时间不长,但好在代码还是JAVA语言来写,数据库更是只学习了一节课,掌握了最基础的增删改差的语句,关于备忘录功能的实现,在逻辑上感觉也是没问题的,就是如何实现与数据库的连接困扰了好久,好几节课都在找资料,看其他同学的代码尝试着连接,但每次都不成功。好在最后成功的解决了,下面将解决方法写下,供其他在数据库连接有疑问的朋友借鉴。
首先,先不说代码的问题,要连接数据库,得有一个.jar文件,我们老师提供了sqljdbc4.jar文件,需要将它放入Java\jdk1.7.0_75\jre\lib\ext路径中。然后打开NetBeans点击服务,将数据库展开,右击驱动程序,点击新建驱动程序,添加上sqljdbc4.jar。或者直接在数据库那里右击,选择新建连接,按步骤新建。其中步骤中数据库的用户名和密码不知懂的朋友,可以打开SQL,点击安全性,右击用户名,选择新建用户名,使用SQL Server身份验证,输入用户名和密码即可。
ok,到此数据库的连接在环境配置方面就搞定了。接下来是代码。
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundException e)
{
System.exit(0);
}
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try
{
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1434;Database Name=XSML","sa","123456");
stmt=con.createStatement();
rs=stmt.executeQuery("SELECT * FROM Table_1");
}
catch(SQLException e)
{
//e.printStackTrace();
System.exit(0);
}finally{
try {
rs.close();
} catch (SQLException ex) {
Logger.getLogger(Dao_modify.class.getName()).log(Level.SEVERE, null, ex);
}
try {
stmt.close();
} catch (SQLException ex) {
Logger.getLogger(Dao_modify.class.getName()).log(Level.SEVERE, null, ex);
}
try {
con.close();
} catch (SQLException ex) {
Logger.getLogger(Dao_modify.class.getName()).log(Level.SEVERE, null, ex);
}
}
以上是完成了数据库的连接,接下来就稍稍解释下代码的意思:
这段代码一直使用try-catch和try-catch-finally语句,为便于解释,只看try句块的代码(其实try-catch的catch中的内容可以自动生成)。Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");返回与带有给定字符串名的类或接口相关联的 Class
对象,这个直接复制就好,con=DriverManager.getConnection("jdbc:sqlserver://localhost:1434;DatabaseName=XSML","sa","123456");建立到给定数据库 URL 的连接,localhost一般都一样,不确定的朋友可以打开SQL,在登录界面看看自己的是什么,冒号后紧跟的是端口号,已经在上文的新建连接中设置了,XSML是我的数据库的名称,要改为自己数据库的名称,"sa","123456"是SQL的用户名和密码,现在我们已经建立链接了,但光有链接还不够,还要可以对数据库进行操作。stmt=con.createStatement();作用就是创建一个 Statement
对象,因为我们操作数据库的语句得通过Statement的方法executeQuery来实现,于是有了下一句rs=stmt.executeQuery("SELECT * FROM Table_1");其中rs是ResultSet类,Table_1是我的表名,方法后接的是数据库的语句,返回结果为表的形式存储在rs中。
建议大家查下Statement类、ResultSet类中的方法,完全可以胜任增删改查的要求,当然还有种办法来连接数据库和进行操作数据库,用的是PreparedStatement类,当时我为了探求如何建立连接及建立连接后如何操作看过这两个方法,但前期在不懂的情况下混乱的不行,根本理不清楚,所以建议大家初次学习和使用连接数据库的时候先用一种自己好理解的方式实现功能,再思考其他的方法是怎么实现的。
最后,要把连接关闭,先关rs,再是stmt,然后关con,关闭用.close();写完rs.close();后会提示警告,点击然后选择将语句包含在try-catch语句中,便自动生成try-catch语句,stmt与con同理。