连接SQL Server数据库(详细步骤+登录注册案例)

您所在的位置:网站首页 c与数据库连接的详细步骤有哪些方法 连接SQL Server数据库(详细步骤+登录注册案例)

连接SQL Server数据库(详细步骤+登录注册案例)

2024-07-04 15:02| 来源: 网络整理| 查看: 265

数据库入门~连接数据库(详细步骤+登录注册案例+简单界面)

步骤一:SQL Server使用sql server身份验证登录,方便与编写的程序连接

首先使用Windows登录进去,右键实例,点击属性,再选择安全性,将该选项卡中的服务器身份验证改为sql server和windows身份验证模式。点击确定

此时重新登录数据库,可能会再次失败 失败的提示是: 已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。

此时打开SQL Server配置管理器,启动SQL Server Browser,设置为自动 在这里插入图片描述 选择SQL Server网络配置选项卡,点击TCP/IP,修改它的属性 在这里插入图片描述在这里插入图片描述IPALL的TCP Port设置为1433,一般情况下动态端口应该是1433,我这个56892,不影响使用。

重新启动SQL Server(MSSQLSERVER) 在这里插入图片描述 现在已经可以使用SQL Server身份验证进行登录。不过前提是你得创建的有SQL Server的身份登录。

创建SQL Server的身份登录: 使用Windows身份验证登录进来后,点击安全性,右键登录名,点击新建登录名,登录名随便起一个,密码设置一下,一般设置为123456。为了方便,我们取消勾选强制密码过期。然后进入服务器角色,勾选管理员权限即可(一般为最后一个)。OK,可以点击确定了。 如下图所示: 在这里插入图片描述

步骤二:在idea中导入JDBC包,用于连接数据库

首先,下载JDBC包,这里给大家提供一个,可根据需要自行下载:点击进入下载JDBC包 接着,将下载好的包随便Unzip到一个位置。 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:关闭连接

第一件事,先把数据库连接代码给写了,这里我创建了一个工具包,里面放的一些工具类,这样会比较方便,所以在这里我就直接把连接数据库的代码包装成了一个工具类(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 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 0&&password.length()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3