admin管理员组文章数量:1794759
连接SQL Server数据库(详细步骤+登录注册案例)
数据库入门~连接数据库(详细步骤+登录注册案例+简单界面)
步骤一:SQL Server使用sql server身份验证登录,方便与编写的程序连接
<1> 首先使用Windows登录进去,右键实例,点击属性,再选择安全性,将该选项卡中的服务器身份验证改为sql server和windows身份验证模式。点击确定
<2>此时重新登录数据库,可能会再次失败 失败的提示是: 已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。
<3>此时打开SQL Server配置管理器,启动SQL Server Browser,设置为自动 <4>选择SQL Server网络配置选项卡,点击TCP/IP,修改它的属性 IPALL的TCP Port设置为1433,一般情况下动态端口应该是1433,我这个56892,不影响使用。
<5>重新启动SQL Server(MSSQLSERVER) <6>现在已经可以使用SQL Server身份验证进行登录。不过前提是你得创建的有SQL Server的身份登录。
<7>创建SQL Server的身份登录: 使用Windows身份验证登录进来后,点击安全性,右键登录名,点击新建登录名,登录名随便起一个,密码设置一下,一般设置为123456。为了方便,我们取消勾选强制密码过期。然后进入服务器角色,勾选管理员权限即可(一般为最后一个)。OK,可以点击确定了。 如下图所示:
步骤二:在idea中导入JDBC包,用于连接数据库
<1>首先,下载JDBC包,这里给大家提供一个,可根据需要自行下载:点击进入下载JDBC包 <2>接着,将下载好的包随便Unzip到一个位置。 <3>OK,打开我们的idea,点击如图 进入这个选项卡,继续,点击右边这个+,点击java 接着,找到之前解压的JDBC包的位置,然后一直OK就行 此时,你会发现如图,这里已经有JDBC包了 步骤三:创建数据库以及案例需要的表
create database Login_Register go use Login_Register create table accountInformation ( id char(12) primary key, password varchar(16) not null )步骤四:java连接数据库,实现代码、
先给大家看一下我写好的登录注册的简陋的样子,以及类,接口和包 运行后的界面 数据输入不合法,登录失败 登陆成功 主键唯一性约束,账号不可重复,故注册失败 输入格式有误,注册失败 注册成功后的提示 重置后清空输入的内容,方便重新输入 OK,看完这简陋的效果,介绍一下步骤。 连接数据库的几个步骤: 1:导入驱动包 2:加载驱动 3:建立于数据库的连接 4:发送并处理SQL语句 5:关闭连接
<1>第一件事,先把数据库连接代码给写了,这里我创建了一个工具包,里面放的一些工具类,这样会比较方便,所以在这里我就直接把连接数据库的代码包装成了一个工具类(JDBCUtil.java)
package ycc.util; /** * 读取和释放数据库的工具类 * @author: 姚崇崇 * */ import java.sql.*; public class JDBCUtil { private static String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=Login_Register;user=test;password=123456"; private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; static { try { Class.forName(driverName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url); } public static void release(ResultSet rs, Statement st,Connection conn){ try { if (rs!=null){ rs.close(); } if (st!=null){ st.close(); } if (conn!=null){ conn.close(); } } catch (SQLException throwables) { throwables.printStackTrace(); } } }定义一个账号的接口(用于规范该类必须实现的内容)
package ycc.account; /** * @author: 姚崇崇 * */ public interface Account { //登录 public void login(String id, String password); //注册 public int register(String id,String password); //重置(清空输入框即可) public void reset(); }接下来定义账号类
package ycc.account; /** * @author: 姚崇崇 * */ import ycc.util.Constant; import ycc.util.JDBCUtil; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class AccountImpl implements Account{ private String id; private String password; public int sign=100;//用于记录登录的情况 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /** * 登录 * @param id * @param password */ @Override public void login(String id, String password) { String ID=""; String PASSWORD=""; List<AccountImpl> list=new ArrayList<>(); AccountImpl account=new AccountImpl(); Connection conn=null; Statement st=null; ResultSet rs=null; try { conn = JDBCUtil.getConnection(); st = conn.createStatement(); String sql="select * from accountInformation where id="+id; rs = st.executeQuery(sql); while(rs.next()){ account.setId(rs.getString("id")); account.setPassword(rs.getString("password")); ID=account.getId(); PASSWORD=account.getPassword(); list.add(account); } } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtil.release(rs,st,conn); } if (list.size()==1){ if (PASSWORD.equals(password)){ sign=Constant.LOGIN_SUCCEED; }else { sign=Constant.LOGIN_ERROR_PASSWORD_IS_FALSE; } }else { sign=Constant.LOGIN_ERROR_ACCOUNT_NOT_EXIST; } } /** * 注册 * @param id * @param password */ @Override public int register(String id, String password) { String sql="insert into accountInformation(id,password) values ('"+id+"','"+password+"')"; Connection conn=null; Statement st=null; ResultSet rs=null; try { conn = JDBCUtil.getConnection(); st = conn.createStatement(); sign=Constant.REGISTER_SUCCEED; return st.executeUpdate(sql); } catch (SQLException e) { sign=Constant.REGISTER_DEFAULT; e.printStackTrace(); }finally { JDBCUtil.release(rs,st,conn); } return 0; } /** * 重置 */ @Override public void reset() { } @Override public String toString() { return "AccountImpl{" + "id='" + id + '\\'' + ", password='" + password + '\\'' + '}'; } }OK,接下来就是搞个界面就结束了
package ycc.main; /** * @author: 姚崇崇 * */ import ycc.account.AccountImpl; import ycc.util.Constant; import ycc.util.MyUtil; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { public static void main(String[] args) { AccountImpl account=new AccountImpl(); JFrame jf=new JFrame(); jf.setLocationRelativeTo(null); jf.setSize(400,300); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel=new JPanel(); JLabel txt=new JLabel("账号:"); JLabel password=new JLabel("密码:"); //创建账号框和密码框,并设置框的初始大小,然后放到面板中 final JTextField textField=new JTextField(); final JPasswordField passwordField=new JPasswordField(); textField.setPreferredSize(new Dimension(300,30)); passwordField.setPreferredSize(new Dimension(300,30)); JButton buttonLogin=new JButton("登录"); JButton buttonRegister=new JButton("注册"); JButton buttonReset=new JButton("重置"); panel.add(txt); panel.add(textField); panel.add(password); panel.add(passwordField); panel.add(buttonLogin); panel.add(buttonRegister); panel.add(buttonReset); buttonLogin.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (MyUtil.judgeID(textField.getText())&&MyUtil.judgePassword(new String(passwordField.getPassword()))) { account.login(textField.getText(), new String(passwordField.getPassword())); if (account.sign == Constant.LOGIN_SUCCEED) { JOptionPane.showMessageDialog( jf, "登录成功!", "提示", JOptionPane.INFORMATION_MESSAGE ); } else if (account.sign == Constant.LOGIN_ERROR_ACCOUNT_NOT_EXIST) { JOptionPane.showMessageDialog( jf, "账号不存在!", "错误", JOptionPane.ERROR_MESSAGE ); } else if (account.sign == Constant.LOGIN_ERROR_PASSWORD_IS_FALSE) { JOptionPane.showMessageDialog( jf, "密码错误!", "错误", JOptionPane.ERROR_MESSAGE ); } }else { JOptionPane.showMessageDialog( jf, "账号或者密码的输入格式错误!请重新输入\\n提示:账号为12位数字,密码为1~16位的字符", "错误", JOptionPane.ERROR_MESSAGE ); } } }); buttonRegister.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (MyUtil.judgeID(textField.getText())&&MyUtil.judgePassword(new String(passwordField.getPassword()))) { account.register(textField.getText(), new String(passwordField.getPassword())); if (account.sign == Constant.REGISTER_SUCCEED) { JOptionPane.showMessageDialog( jf, "注册成功!", "提示", JOptionPane.INFORMATION_MESSAGE ); } else if (account.sign == Constant.REGISTER_DEFAULT) { JOptionPane.showMessageDialog( jf, "注册失败!", "错误", JOptionPane.ERROR_MESSAGE ); } }else { JOptionPane.showMessageDialog( jf, "账号或者密码的输入格式错误!请重新输入\\n提示:账号为12位数字,密码为1~16位的字符", "错误", JOptionPane.ERROR_MESSAGE ); } } }); buttonReset.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textField.setText(""); passwordField.setText(""); } }); jf.setContentPane(panel); jf.setVisible(true); } }OK,有始有终,这里我把剩余的有关代码全部给大家提供了。 剩余的类的代码: Constant.java:(存放一些常量,便于后期的维护)
package ycc.util; /** * @author: 姚崇崇 * */ public class Constant { //登录成功 public static final int LOGIN_SUCCEED=0; //密码错误 public static final int LOGIN_ERROR_PASSWORD_IS_FALSE=1; //账号不存在 public static final int LOGIN_ERROR_ACCOUNT_NOT_EXIST=2; //注册成功 public static final int REGISTER_SUCCEED=3; //注册失败 public static final int REGISTER_DEFAULT=4; }MyUtil.java:(判断账号和密码的输入是否合法)
package ycc.util; /** * @author: 姚崇崇 */ public class MyUtil { public static boolean judgeID(String id){ if (id.length()==12){ char[] arr=id.toCharArray(); for (char c : arr) { if (c >= '0' && c <= '9') { } else { return false; } } }else { return false; } return true; } public static boolean judgePassword(String password){ if (password.length()>0&&password.length()<=16){ return true; }else { return false; } } }欢迎各位多多评论, My QQ:2959606653,也可以加个好友一块学习
版权声明:本文标题:连接SQL Server数据库(详细步骤+登录注册案例) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686658773a91574.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论