设为首页 收藏本站
查看: 888|回复: 0

[经验分享] java连接sql server2008的两种方法

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-5-8 13:31:25 | 显示全部楼层 |阅读模式
最近学到java连接数据库(sql server),发现常用的我们有两种方法,那么这里我总结一下这两种方法怎么使用,还有它们的区别,还有我们一般要使用哪一种方法。
方法一:使用jdbc-odbc桥连接sql server,作为中间媒介连接数据库;
注意我们每次在连接数据库前都必须要引入sql包:import java.sql.*;接下来的步骤都是习惯性步骤,我这里就按照每一步的使用进行列举:
1.配置数据源:打开控制面版->管理工具->数据源(ODBC)->(一般而言我们使用用户DSN)按下添加按钮->sql server->写下数据源的名字(自己进行命名,假设是test,为下面的例子做铺垫),再写下连接的服务器名(一般默认为local)->更改默认的数据库为(勾选你想要连接的数据库)->接下来一直确定就完成了数据源的配置.
2.加载驱动:Class.forNmae("sun.jdbc.odbc.JdbcOdbcDriver");
3.得到连接:Connection ct=DriverManager.getConnection("jdbc:odbc:test");test是配置数据源的时候的数据源名字
4.创建preparedStateMent(这里不用Statement,相比preparedStateMent,它有很多缺点),这个语句主要是用于发送sql语句到数据库.
5.最后关闭所有操作就行了,


import java.sql.*;
public class preparedStatement {

    public static void main(String[] args) {
        Connection ct = null;
        PreparedStatement ps = null;
        ResultSet rs=null;

        try {
            //加载驱动
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            //得到连接
            ct=DriverManager.getConnection("jdbc:odbc:test");
            //创建一个PreparedStatement,用于向数据库放松sql语句
            ps=ct.prepareStatement("select * from 产品名称表");
            //得到结果
            rs=ps.executeQuery();//这个方法适用于从表中查找数据
            //如果要向表中插入,删除,更新数据需要使用方法executeUpdate();
            while(rs.next()){//这里rs.next()一定要使用next()方法,否则有空指针错误
                String number=rs.getString(1);
                String string=rs.getString(2);
                System.out.println(number+" "+string);

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭资源,记住关闭资源的顺序,根据得到赋值的反顺序进行关闭资源
            try {
                if(rs!=null){
                    rs.close();
                }
                if (ps != null)
                    ps.close();
                if (ct != null)
                    ct.close();
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}
这个代码是经过测试过的,这里我就不进行截图了。
注意:我们还可以使用?赋值的方法,这个方法对我们而言更加有利
ps=ct.prepareStatement("select * from 产品名称表 whrer 产品名称=?");
ps.setString(1,"手机");//表示在第一个问号上添加“手机”的字符串.如果是整数用setInt()方法;
方法二:使用驱动程序直接操作数据库
这里吐槽下,这个方法比上面的方法好,更加使用,但是前期所做的工作更多,为了实现这一步的操作,我不知道流了多少泪,这里我把自己遇到的困难和问题一一列举解决。
1.这里需要引入jar包,这里sql server2008,只要引入sqljdbc4.jar包就行了。这个包百度上有下载。这里我主要提供怎么引入这个包。
方法:工具栏project选项->properties->java Build path中选择libraries->点击add Externar jars按钮->然后在你电脑中选中sqljdbc4.jar导入进去
2.这一步需要用到你的sql server知识,因为我们连接数据库一般是使用sql验证,所以需要你自己建立帐号密码,这里我仅仅示范一下使用数据库中原本存在的用户名sa,用这个例子说明:
方法:先用windows验证进入数据库,然后在安全性中的登录名中选中系统给出的用户名sa,单机右键
->选中属性的按键->修改这里给的密码,修改成你自己需要的密码->点击确定就好。然后断开连接,重新以现在的用户名和密码连接。然后在这个用户名中新建数据库就好。
3.然后进行代码演示:


import java.sql.*;
public class jdbc1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection ct = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //第一步,加载驱动
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //得到连接
            ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=liuyan","sa","3209554");
            //创建PreparedStatement
            ps=ct.prepareStatement("select * from userinformation where name='张三丰'");

            rs=ps.executeQuery();
            //这个方法适用于从表中查找数据
            //如果要向表中插入,删除,更新数据需要使用方法executeUpdate();
            while(rs.next()){//这里rs.next()一定要使用next()方法,否则有空指针错误
                String number=rs.getString(1);
                String string=rs.getString(2);
                String string2=rs.getString(3);
                System.out.println(number+" "+string+" "+string2);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(rs!=null){
                    rs.close();
                }
                if (ps != null)
                    ps.close();
                if (ct != null)
                    ct.close();
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}
这是经过测试,结果绝对没有问题。很开心解决了这样一个难题。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-18943-1-1.html 上篇帖子: Excel导入数据到Sql server 中出错:“文本被截断,或者一个. 下篇帖子: 在SQL Server中实现 Limit m,n 的功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表