java Swing 程序连接SQLsever数据库方面的系列问题.

本文分享了使用Java Swing连接SQL Server数据库时遇到的问题和解决方案,包括两种连接方式:1) 通过ODBC建立数据源,2) 直接连接。强调了引入sqljdbc.jar包的重要性,以及SQL Server 2000需要打补丁才能连接。建议使用SQL登录模式以增强安全性。
摘要由CSDN通过智能技术生成

把这些写下来是觉得当时自己在这方面的问题走了很多冤路.希望在学习JAVA编程方面的同学能够参考一下,不要像我一样走那么多冤路...

 

编程语言:Java

数据库:SQL Server 2000,SQL Server 2005(两种自己人选,但是连接方式不样..)

开发IDE:eclipse

目的:实现用户通过GUI与数据库交互数据.

 

首先是连接方式:(推介第二种)

一般连接方式分为两种:1 通过ODBC建立数据源,Java中的连接代码:这里创建的数据源我们用sun(数据源的名字可以根据你自己的喜好来取!)

     try

     {

       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

       //sun就是我们建立的数据源...

        }

     catch(ClassNotFoundException e)

      {

        System.out.println(e);

      }

     try

     {

        Connection con = DriverManager.getConnection("jdbc:odbc:sun","","");

        //这里“”,“”引号里面的内容是你连接sun数据源的时候,需要用的登录名和用户名。是自己在建立sun这个数据源的时候自己设定的,如果没有设定登录名和用户名,就直接用“”,“”表示,也是可以的.....

       Statement sql = con.createStatement();

       ResultSet rs = sql.executeQuery("");//括号里面的双引号的内容就是你要执行的查询,例如:select * from  productTable

     }

   这就是利用建立数据源来连接数据库...其实我不喜欢这种方法(麻烦的很)

2.第二种连接方法:不通过创建数据源建立与数据库的链接,一会才介绍连接代码。

重点的东西是:在你的程序中一定要引入一个包:“sqljdbc.jar”这个包,如果你没有引入这个包,在运行程序时,Eclipse的控制台会报:SQL DRIVER方面的错误,也就是数据库驱动方面的错误,这个包在java的官方网站上面有下。

                 如果你用的是SQL Server 2000 的数据库,一定要确保你给你的SQL打过SP3,SP4的补丁了,不然也是连接不上的,如果是SQL Server2005版本的话,就不需要打补丁了,直接使用,还有就是SQLServer2000和SQLServer2005的默认端口是 TCP的1433,UDP的1434,要确保你的端口是打开的才行,你可以再DOS里面使用 netstat -an 指令查看你电脑上打开了哪一些的端口......要是你没有打开你的TCP1433端口,可以在SQLServer2000(2005)中的配置工具的SQL Server Configuration Manager中的SQL Server 2005的网络配置中打开.

java程序中的链接代码是:

      
   Connection con ;
   Statement sql;
   ResultSet rs;

   try
   {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
   }
   catch(ClassNotFoundException e1)
   {
              e1.printStackTrace();
   }
   try
   {
    con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=SBookMC","sa","ckzjj1028");
    sql = con.createStatement();
    rs = sql.executeQuery("Select* from ManagersTable ");

可以看出的是,在连接的大体形式上是没有多大的区别的,只是在连接的URL内容不一样.这里的Localhost就是你本机的IP:127.0.0.1,1433就是上面说的数据库德默认端口。这里要注意的是,我使用的SQL登录模式,就是Windows和SQL的混合验证模式。(推介使用这种模式,应为要是Windows验证模式的话不安全,在代码方面很不同)。

希望以上介绍可以对你有用,不足的地方和错误的地方大家可以指出.....

package cn; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; //登陆面板 public class Login extends JFrame { Connection conn = null; Statement stmt = null; ResultSet rst = null; public Login() { try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("加载驱动成功。"); String url = "jdbc:mysql://localhost/users"; String user = "root"; String password = "123456"; conn = DriverManager.getConnection(url, user, password); System.out.println("连接数据库成功。"); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); rst = stmt.executeQuery("SELECT*FROM user"); } catch (Exception e) { System.out.println(e); } setTitle("登陆页面"); JPanel panel = new JPanel(); //JLabel lblName = new JLabel("用户名:"); JTextField txtName = new JTextField(10); //lblName.setHorizontalAlignment(JLabel.CENTER); panel.add(new JLabel("用户名:")); panel.add(txtName); JLabel lblPassword = new JLabel("密码:"); JPasswordField txtPassword = new JPasswordField(10); lblPassword.setHorizontalAlignment(JLabel.CENTER); panel.add(lblPassword); panel.add(txtPassword); add(panel, BorderLayout.CENTER); JPanel panel2 = new JPanel(); JButton btnLogin = new JButton("登陆"); /** * 给登陆按钮添加监听事件 当按钮被点击时时间被触发 */ btnLogin.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean b = false; // boolean b = um.Login(txtName.getText(), txtPassword.getText()); try { stmt = conn.createStatement();// 预定义语句 // 数据库查询语句(根据用户名和密码) String sql = "select * from user where User='" + txtName.getText() + "' and Password='" + txtPassword.getText() + "'"; rst = stmt.executeQuery(sql);// 执行查询语句 // rst中有数据,则将标记改为true if (rst.next()) { b = true; } } catch (SQLException e1) { e1.printStackTrace(); } if (b) {// 登陆成功,跳转页面 JOptionPane.showMessageDialog(null, "登陆成功!"); new ProductQueryDemo();// 打开主页 dispose();// 关闭窗口 } else {// 登陆失败 JOptionPane.showMessageDialog(null, "登陆失败!"); } } }); JButton btnReset = new JButton("重置"); /** * 点击重置按钮时,将文本框中的值设置为空 */ btnReset.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { txtName.setText(""); txtPassword.setText(""); } }); JButton btnSignin = new JButton("注册"); /** * 点击注册按钮时,调用注册程序 */ btnSignin.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new Signin(); dispose();// 关闭窗口 } }); panel2.add(btnLogin); panel2.add(btnReset); panel2.add(btnSignin); add(panel2, BorderLayout.PAGE_END); setSize(430, 150); setLocationRelativeTo(null); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new Login(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值