当前位置:天才代写 > tutorial > JAVA 教程 > jdbc毗连SQL Server数据库的留意事项及编程应用实例

jdbc毗连SQL Server数据库的留意事项及编程应用实例

2017-11-02 08:00 星期四 所属: JAVA 教程 浏览:589

副标题#e#

首先,关于数据库的安装要领在本文中就不再累赘,详情请见我的上一篇博客。

http://cq520.iteye.com/admin/blogs/1982097

不外需要留意的是,由于装有Windows操纵系统下的电脑都默认有SQL Server,所以各人可以打开本身 的电脑看一下本身的电脑内里是哪个SQL Server 版本(在开始菜单中找到Microsoft SQL Server文件夹 ,后头的版本号就是本机的SQL Server 版本)。

不外系统自带的SQL Server大概并没有打点东西(SQL Server Management Studio,如本人的电脑) ,就可以在百度下载,要记得添加上本身的版本号哦,如SQL Server Management Studio 2005.

下面进入主题,如何利用JDBC毗连SQL Server数据库:(以2005版本为例)

1. 封锁防火墙。防火墙配置会导致你无法毗连到当地的数据库,至少这是出于安详的思量。

2. 设置TCP端口:

a. 开始->所有措施->Microsoft SQL Server 2005->设置东西- >SQL Server设置打点器->SQL Server 2005 网络设置->MSSQLSERVER协议

b. 启用 “TCP/IP”(右键单击选择“启动”)[http://www.colalife.com]

c. 双击 “TCP/IP”->“IP 地点”->“IPAll”->“TCP 端口 ”项添加默认的“1433”端口

3. 外围应用设置:Microsoft SQL Server 2005->设置东西->SQL Server外围应用设置器-> 处事和毗连的外围应用设置器->

①选SQLEXPRESS->Database Engine->长途毗连->当地 毗连和长途毗连->同时利用TCP/IP和named pipes

②选SQL Server Browser->处事->启动类 型改为“自动”->应用->启动->确定

4. 修改默认的登录验证模式(假如在安装进程中是默认按“Windows 身份验证模式”方法 安装,所以sa登录是被禁用的,纵然将身份验证模式变动为“SQL Server 和 Windows 身份验证模 式”,sa登录仍处于禁用状态,所以需要启用sa登录帐户):

①在SQL Server Management Studio 的工具资源打点器中,安详性->登录名->右击“sa”->属性->

通例->将登录名sa的暗码和确认暗码设为强暗码->状态->登录->启用->确定

②在 SQL Server Management Studio 的工具资源打点器中,右击处事器->属性->安详性->处事器身 份验证->选择“SQL Server和Windows身份验证模式”->确定->确定

5. 在SQL Server Management Studio中新建一个数据库(譬喻“mytest”,假如测试措施 带有数据库文件也可不消新建而直接附加到当前SQL Server数据库处事器);在SQL Server Management Studio 的工具资源打点器中右击处事器->从头启动->是

6. 运行下载的JDBC文件“sqljdbc_1.2.2828.100_chs.exe”,(已在附件中给各人配上), 解压到“C:\Program Files”文件夹中;[http://www.colalife.com]

将Classpath配置为包括sqljdbc.jar文件(也可加到系统情况变量中),发起从解压文件夹下找到 sqljdbc.jar,将其复制到本身常用的Jar文件夹里,用的时候利便找到。

7. 在Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5 中举办JDBC毗连配置并测试

1、打开Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5,新建Java Project”,项目名为Test

2、选择 “Window”→“Preferences”→“Java”→“Inst alled JREs”,选定已安装的 JRE,点击“Edit…”→“Add External JARs”,找到sqljdbc.jar并添加—>OK

3、"Window"->"Open Perspective"->"MyEclipse Database Explorer"->(左侧)"DB Browser"右键“New”->填写链接属性Driver name,URL为:jdbc:sqlserver:// localhost:1433;databaseName=mytest,User name:sa,Password:暗码。然后在Driver JARs 点Add JARs 添加sqljdbc.jar,点及Test

Driver测试,勾上Save Password生存暗码,点击完成竣事——即完成了在DB Browser中连 接数据库设置。

到上面一步为止,我们的设置事情就已经根基完成了,接下来就是一个数据库编程的详细实例。需要 留意的是,就像我上面所提到的,要举办数据库编程,至少得有个数据库吧(巧妇难为无米之炊),还要 会一些根基的数据库操纵,这些对付学过数据库课程的你应该没有问题,假如你没学过数据库课程,也没 干系,你可以花时间看看数据库的一些简朴操纵,这些在相关讲义上很容易找到。


#p#副标题#e#

空话不多说,代码如下:

Java代码

package DBManager;  
      
import java.sql.Connection;  
import java.sql.DriverManager;  
      
import INFO.Info;  
      
/** 
 * 数据库毗连类 
 * @author Administrator 
 * 
 */
public class DBConnection {  
    //加载并毗连当地的SQLServer  
    String driveName="com.microsoft.sqlserver.jdbc.SQLServerDriver";  
    String url="jdbc:sqlserver://localhost:1433;DatabaseName=cqTalk";  
          
    String userName="sa";  
    String pwd="xiaoyan710";  
          
    /** 
     * 建设时加载驱动 
     */
    public DBConnection(){  
        try{  
            Class.forName(driveName);  
        }catch(Exception e){  
            Info.error("驱动加载失败");  
        }  
    }  
          
    public Connection getConnection(){  
        Connection con=null;  
        try{  
            con=DriverManager.getConnection(url,userName,pwd);  
            Info.log("数据库毗连乐成");  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        return con;  
    }  
          
}

#p#分页标题#e#

Java代码

package User;  
      
import java.sql.Connection;  
import java.sql.PreparedStatement;  
import java.sql.ResultSet;  
      
import DBManager.DBConnection;  
import INFO.Info;  
      
/** 
 * 对用户数据的操纵 
 * @author cq 
 * 
 */
public class UserDao {  
      
    DBConnection dbCon=null;  
    Connection connection=null;  
          
    PreparedStatement state=null;//预编译的sql语句工具  
    String sql=null;//sql语句  
          
    /** 
     * 建设用户操纵类时加载驱动 
     */
    public UserDao(){  
        dbCon=new DBConnection();  
    }  
          
    /** 
     * 添加新用户的要领 
     * @param user 
     */
    public void add(User user){  
              
        connection=dbCon.getConnection();  
        sql="insert into userData values(?,?,?,?,?)";  
        try{  
            state=connection.prepareStatement(sql);  
            state.setString(1, user.getID());  
            state.setString(2, user.getPwd());  
            state.setString(3, user.getNickname());  
            state.setInt(4, user.getChecking());  
            state.setString(5, user.getAnswer());  
                  
            state.executeUpdate();  
            Info.log("用户添加乐成");  
            state.close();  
                  
        }catch(Exception e){  
            e.printStackTrace();  
            Info.error("用户添加失败");  
        }finally{  
            if(connection!=null){  
                try{  
                    connection.close();  
                }catch(Exception e){  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
          
    /** 
     * 删除一个用户的要领,按照用户的ID号 
     * @param ID  
     */
    public void delete(String ID){  
        connection=dbCon.getConnection();  
        sql="delete from userData where userID=?";  
        try{  
            state=connection.prepareStatement(sql);  
            state.setString(1, ID);  
                  
            state.executeUpdate();  
            Info.log("用户删除乐成");  
            state.close();  
                  
        }catch(Exception e){  
            Info.error("用户删除失败");  
        }finally{  
            if(connection!=null){  
                try{  
                    connection.close();  
                }catch(Exception e){  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
          
    /** 
     * 更新用户数据的要领 
     * @param user 
     */
    public void update(User user){  
        connection=dbCon.getConnection();  
        sql="update userData set pwd=?,nickname=?" +  
                ",checking=?,answer=? where userID=?";  
        try{  
            //执行更新操纵时,所填入的数据顺序必然要与sql语句的数据顺序沟通  
            state=connection.prepareStatement(sql);  
            state.setString(1, user.getPwd());  
            state.setString(2, user.getNickname());  
            state.setInt(3, user.getChecking());  
            state.setString(4, user.getAnswer());  
            state.setString(5, user.getID());  
                  
            state.executeUpdate();  
                  
            Info.log("用户更新乐成");  
            state.close();  
                  
        }catch(Exception e){  
            e.printStackTrace();  
            Info.error("数据更新失败");  
        }finally{  
            if(connection!=null){  
                try{  
                    connection.close();  
                }catch(Exception e){  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
          
    /** 
     * 按照用户ID查找用户的信息 
     * @param ID 
     */
    public User get(String ID){  
        User user=new User();  
        connection=dbCon.getConnection();  
        sql="select * from userData where userID=?";  
        try{  
            state=connection.prepareStatement(sql);  
            state.setString(1, ID);  
                  
            ResultSet set=state.executeQuery();  
            while(set.next()){  
                user.setID(set.getString(1).trim());  
                user.setPwd(set.getString(2).trim());  
                user.setNickname(set.getString(3).trim());  
                user.setChecking(set.getInt(4));  
                user.setAnswer(set.getString(5));  
            }  
                  
            state.close();  
            set.close();  
        }catch(Exception e){  
            Info.error("查找失败");  
        }finally{  
            if(connection!=null){  
                try{  
                    connection.close();  
                }catch(Exception e){  
                    e.printStackTrace();  
                }  
            }  
        }  
        return user;  
    }  
}

查察本栏目

#p#副标题#e#

#p#分页标题#e#

Java代码

package User;  
      
/** 
 * 用户类 
 * @author cq 
 * 
 */
public class User {  
        private String ID;//账号  
        private String pwd;//暗码  
        private String nickname;//昵称  
        private int checking;//密保验证编号  
        private String answer;//谜底  
      
        public User(){  
                  
        }  
              
        public User(String ID,String pwd){  
            this.ID=ID;  
            this.pwd=pwd;  
        }  
      
        /** 
         * 获取账号 
         * @return 
         */
        public String getID() {  
            return ID;  
        }  
      
        /** 
         * 配置账号 
         * @param iD 
         */
        public void setID(String iD) {  
            ID = iD;  
        }  
      
        /** 
         * 获取暗码 
         * @return 
         */
        public String getPwd() {  
            return pwd;  
        }  
      
        /** 
         * 配置暗码 
         * @param pwd 
         */
        public void setPwd(String pwd) {  
            this.pwd = pwd;  
        }  
      
        /** 
         * 获取昵称 
         * @return 
         */
        public String getNickname() {  
            return nickname;  
        }  
      
        /** 
         * 配置昵称 
         * @param nickname 
         */
        public void setNickname(String nickname) {  
            this.nickname = nickname;  
        }  
      
        /** 
         * 获取验证编号 
         * @return 
         */
        public int getChecking() {  
            return checking;  
        }  
      
        /** 
         * 配置验证编号 
         * @param checking 
         */
        public void setChecking(int checking) {  
            this.checking = checking;  
        }  
      
        /** 
         * 获取密保谜底 
         * @return 
         */
        public String getAnswer() {  
            return answer;  
        }  
      
        /** 
         * 配置密保谜底 
         * @param answer 
         */
        public void setAnswer(String answer) {  
            this.answer = answer;  
        }  
          
}

这里简朴的先容了数据库的增删查改等成果(这熟悉的名词是否也在那边听过呢??O(∩_∩) O~),出格需要留意的是,我在更新数据要领中所标明的那一句注释,许多人常常搅散了顺序而得不到正 确的功效。

另外,尚有几点:

一、必然要记得finally语句中所执行的内容,不管操纵是否乐成都必然要封锁毗连,这一点很是重要 。

二、最好将异常动静打印出来,这在初期编程的时候可以或许越发利便的帮你办理问题。

三、在利用完数据库之后将’sa’用户的暗码计策改为强制逾期,(这一点是出于信息安 全的思量),在每次利用前再打消暗码强制逾期,并修改暗码,再执行jdbc操纵,详细修改要领请见上面 第四条。

四、Sql Server2000和2005的毗连代码区别:(留意2000和2005的差异)

1. 毗连 SqlServer2000

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

 URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb";

2. 毗连 SqlServer2005

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

 URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
五、大概呈现的exception: com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>

WARNING: Failed to load the sqljdbc_auth.dll
办理步伐:在sqljdbc_1.2.2828.100_chs.exe解压后的文件夹中找到Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.2\chs\auth\x86下的sqljdbc_auth.dll拷贝到:C:WINDOWSsystem32 目次下即可。

#p#分页标题#e#

根基内容就到这里了,假如你利用的是MySQL,那也不要紧,除了情况设置之外,只是驱动跟端标语需 要修改而已,快用数据库优化你的措施吧。

 

    关键字:

天才代写-代写联系方式