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

  • Home
  • 赛事追踪
  • 连接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 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,也可以加个好友一块学习