Java程序代码连接SQL Server数据库实现账号登录注册等功能(不定时更新)

目录

  • 一、配置和验证数据库连接信息
  • 二、增删查改的基本操作
      • 1、查询
      • 2、插入
      • 3、修改
      • 4、删除
  • 三、配置程序代码
  • 四、总结

今天特意去重新学习了一下Java连接数据库的知识内容,以前也尝试过,但总是连接失败,然后就不了了之了。今天终于成功了,弄懂了原理后,没想到原来这么简单,一起来看看吧。

一、配置和验证数据库连接信息

1、设置一下数据库连接信息,步骤和之前的差不多,创建的数据库都是同一个,用SQL Server身份验证登录,记住登录名和密码。

Java程序代码连接SQL Server数据库实现账号登录注册等功能(不定时更新)_第1张图片

2、新建一个“账号登录”数据库,在里面创建一张“登录注册表”,设置好列名username、password和数据类型。

Java程序代码连接SQL Server数据库实现账号登录注册等功能(不定时更新)_第2张图片

3、安装sqlJDBC驱动程序。【下载链接:https://pan.百度.com/s/1N_AeKykMSwA0YGavf8aMUA?pwd=TSGB
提取码:TSGB (“百度”改为“baidu”)】。下载后解压在Java编辑器安装路径下面,例如我的是安装在IDEA文件夹路径下的SQLServerTool文件夹里面。

Java程序代码连接SQL Server数据库实现账号登录注册等功能(不定时更新)_第3张图片

4、验证Java连接SQL数据库是否成功,代码如下:


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		//“账号登录”是数据库名称
		String user = "sa";	//登录名
		String pwd = "1231232580";	//密码
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, user, pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		conn.close();
	}
}

二、增删查改的基本操作

1、查询

我这里讲两种常用的SQL查询,一个是查询数据,一个是查询结果的返回值。

例1:查询数据库表中的所有数据。


import java.sql.*;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "65432580";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		String sql = "select* from 登录注册表";
		PreparedStatement st = conn.prepareStatement(sql);
		ResultSet sdt = st.executeQuery();
		while (sdt.next())
		{
			String user = sdt.getString("username");  //username是数据库表的列名
			String pwd = sdt.getString("password");	//password是数据库表的列名
			System.out.println("账号:" + user);
			System.out.println("密码:" + pwd);
		}
		conn.close();
	}
}

例2:查询数据库表中的指定数据。


import java.sql.*;
import java.util.Scanner;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "1234180";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		Scanner scnn = new Scanner(System.in);
		System.out.println("请输入账号:");
		String yonghuming = scnn.nextLine();
		System.out.println("请输入密码:");
		String mima = scnn.nextLine();
		String sql = "select* from 登录注册表 where username=? and password=?";	//带参数的查询,参数用?表示,
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, yonghuming);	//1表示第一个参数,yonghuming是传入的实参
		st.setString(2, mima);			//2表示第二个参数
		ResultSet sdt = st.executeQuery();
		while (sdt.next())
		{
			String user = sdt.getString("username");
			String pwd = sdt.getString("password");
			System.out.println("账号:" + user);
			System.out.println("密码:" + pwd);
		}
		conn.close();
	}
}

例3:查询数据库表中一共有多少条数据。


import java.sql.*;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "76543580";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		String sql = "select count(*) from 登录注册表";
		PreparedStatement st = conn.prepareStatement(sql);
		ResultSet sdt = st.executeQuery();
		while (sdt.next())
		{
			int count = sdt.getInt(1);
			System.out.println("一共有 " + count + " 条数据记录");
		}
		conn.close();
	}
}

例4:查询数据库表中指定的数据有多少条记录。


import java.sql.*;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "ew2s20";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		String sql = "select count(*) from 登录注册表 where username=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1,"1234");	//查询账号为1234的记录有多少条
		ResultSet sdt = st.executeQuery();
		while (sdt.next())
		{
			int count = sdt.getInt(1);
			System.out.println("一共有 " + count + " 条数据记录");
		}
		conn.close();
	}
}


2、插入

在数据库表中插入一条数据。


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "098ujio80";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		String one = "12345";
		String two = "67890";
		String sql = "insert into 登录注册表 (username,password) values (?,?)";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, one);
		st.setString(2, two);
		st.execute();
		conn.close();
	}
}


3、修改

在数据库表中修改指定数据。


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "zx23450";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		String one = "12345";
		String two = "67890";
		String sql = "update 登录注册表 set password=? where username=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, one);	
		st.setString(2, two);	//将用户名为two的密码修改为one。
		st.execute();
		conn.close();
	}
}

4、删除

删除SQL数据库表中的指定数据。


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class main7
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;Encrypt=false;integratedSecurity=false;";
		String User = "sa";
		String Pwd = "z若678i80";
		Connection conn = null;
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动加载成功");
			conn = DriverManager.getConnection(url, User, Pwd);
			System.out.println("SQL数据库连接成功!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		String one = "12345";
		String sql = "delete from 登录注册表 where password=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, one); //将用户名为one的这条数据从数据库中删除
		st.execute();
		conn.close();
	}
}

三、配置程序代码

全部代码如下:


import java.sql.*;
import java.util.Scanner;

public class CT4
{
	private static final String Stu = "jdbc:sqlserver://localhost:1433;DatabaseName=账号登录;encrypt=false";
	private static final String User = "sa";
	private static final String Pwd = "6543280";
	public static Scanner scnn = new Scanner(System.in);

	public static void Login() throws SQLException//账号登录
	{
		Connection conn = DriverManager.getConnection(Stu, User, Pwd);
		System.out.print("请输入账号:");
		String username = scnn.nextLine().trim();
		while ("".equals(username.trim()))
		{
			System.out.print("请输入账号:");
			username = scnn.nextLine().trim();
		}
		System.out.print("请输入密码:");
		String password = scnn.nextLine().trim();
		while ("".equals(password.trim()))
		{
			System.out.print("请输入密码:");
			password = scnn.nextLine().trim();
		}
		String sql = "select count(*) from 登录注册表 where username=?;";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, username);
		ResultSet rs = st.executeQuery();
		while (rs.next())//判断账号是否存在
		{
			int count = rs.getInt(1);
			if (count == 1)
			{
				conn.close();
				LoginVerify(username, password);
			}
			else
			{
				System.out.println("该账号不存在,是否选择注册一个新账号?\n1、是;2、否;3、返回");
				String num = scnn.nextLine().trim();
				switch (num)
				{
					case "1":
						System.out.println();
						Register();
						break;
					case "2":
						System.out.println();
						Login();
						break;
					case "3":
					default:
						System.out.println();
						Main();
				}
				conn.close();
			}
		}
	}

	public static void LoginVerify(String username, String password) throws SQLException//判断账号密码是否正确
	{
		Connection conn = DriverManager.getConnection(Stu, User, Pwd);
		String sql = "select count(*) from 登录注册表 where username=? and password=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, username);
		st.setString(2, password);
		ResultSet rs = st.executeQuery();
		while (rs.next())
		{
			int cont = rs.getInt(1);
			if (cont == 1)
			{
				System.out.println("账号登录成功!\n");
				conn.close();
				Main();
			}
			else
			{
				System.out.println("账号密码错误!\n");
				conn.close();
				Login();
			}
		}
	}

	public static void Register() throws SQLException    //账号注册
	{
		Connection conn = DriverManager.getConnection(Stu, User, Pwd);
//		Connection conn=null;
//		try
//		{
//			conn = DriverManager.getConnection(Stu, User, Pwd);
//			System.out.println("数据库连接成功!");
//		}
//		catch (SQLException e)
//		{
//			e.printStackTrace();
//			System.out.println("数据库连接失败!");
//			conn.close();
//		}
		System.out.print("请输入注册账号:");
		String newuser = scnn.nextLine().trim();
		while ("".equals(newuser.trim()))
		{
			System.out.print("请输入注册账号:");
			newuser = scnn.nextLine().trim();
		}
		System.out.print("请输入账号密码:");
		String newpwd = scnn.nextLine().trim();
		while ("".equals(newpwd.trim()))
		{
			System.out.print("请输入账号密码:");
			newpwd = scnn.nextLine().trim();
		}
		System.out.print("请确认账号密码:");
		String renewpwd = scnn.nextLine().trim();
		while ("".equals(renewpwd.trim()) || !renewpwd.equals(newpwd))
		{
			System.out.print("请重新确认账号密码:");
			renewpwd = scnn.nextLine().trim();
		}
		String sql = "select count(*) from 登录注册表 where username=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, newuser);
		ResultSet rs = st.executeQuery();
		while (rs.next())
		{
			int count = rs.getInt(1);
			switch (count)
			{
				case 0:
					RegisterSave(newuser, newpwd);
					break;
				case 1:
				case 2:
				default:
					System.out.println("该账号已注册!\n");
					Register();
					break;
			}
		}
	}

	public static void RegisterSave(String newuser, String newpwd) throws SQLException     //保存注册后的账号信息到数据库
	{
		try
		{
			Connection conn = DriverManager.getConnection(Stu, User, Pwd);
			String sql = "insert into 登录注册表 (username,password) values (?,?)";
			PreparedStatement sd = conn.prepareStatement(sql);
			sd.setString(1, newuser);
			sd.setString(2, newpwd);
			sd.execute();
			conn.close();
			System.out.println("账号注册成功!\n");
			Main();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.out.println("账号注册失败!\n");
			Main();
		}
	}

	public static void Change() throws SQLException//修改账号密码
	{
		Connection conn = DriverManager.getConnection(Stu, User, Pwd);
		System.out.print("请输入账号:");
		String username = scnn.nextLine().trim();
		while ("".equals(username.trim()))
		{
			System.out.print("请输入账号:");
			username = scnn.nextLine().trim();
		}
		System.out.print("请输入旧密码:");
		String oldpassword = scnn.nextLine().trim();
		while ("".equals(oldpassword.trim()))
		{
			System.out.print("请输入旧密码:");
			oldpassword = scnn.nextLine().trim();
		}
		System.out.print("请输入新密码:");
		String newpassword = scnn.nextLine().trim();
		while ("".equals(newpassword.trim()) || oldpassword.trim().equals(newpassword.trim()))
		{
			if ("".equals(newpassword.trim()))
			{
				System.out.print("请输入新密码:");
				newpassword = scnn.nextLine().trim();
			}
			else
			{
				System.out.print("请重新输入新密码:");
				newpassword = scnn.nextLine().trim();
			}
		}
		String sql = "select count(*) from 登录注册表 where username=? and password=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, username.trim());
		st.setString(2, oldpassword.trim());
		ResultSet sdt = st.executeQuery();
		while (sdt.next())
		{
			int count = sdt.getInt(1);
			if (count == 1)
			{
				ChangeSave(username, newpassword);
			}
			else
			{
				System.out.println("账号或密码错误!\n");
				conn.close();
				Change();
			}
		}
	}

	public static void ChangeSave(String username, String newpassword) throws SQLException    //保存修改后的密码到SQL数据库
	{
		try
		{
			Connection conn = DriverManager.getConnection(Stu, User, Pwd);
			String sql = "update 登录注册表 set password =? where username=?";
			PreparedStatement sd = conn.prepareStatement(sql);
			sd.setString(1, newpassword);
			sd.setString(2, username);
			sd.execute();
			conn.close();
			System.out.println("账号密码修改成功!\n");
			Main();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.out.println("账号密码修改失败!\n");
			Main();
		}
	}

	public static void Delete() throws SQLException//账号注销
	{
		Connection conn = DriverManager.getConnection(Stu, User, Pwd);
		System.out.print("请输入账号:");
		String username = scnn.nextLine().trim();
		while ("".equals(username.trim()))
		{
			System.out.print("请输入账号:");
			username = scnn.nextLine().trim();
		}
		System.out.print("请输入密码:");
		String password = scnn.nextLine().trim();
		while ("".equals(password.trim()))
		{
			System.out.print("请输入旧密码:");
			password = scnn.nextLine().trim();
		}
		String sql = "select count(*) from 登录注册表 where username=? and password=?";
		PreparedStatement st = conn.prepareStatement(sql);
		st.setString(1, username.trim());
		st.setString(2, password.trim());
		ResultSet sdt = st.executeQuery();
		while (sdt.next())
		{
			int count = sdt.getInt(1);
			if (count == 1)
			{
				DeleteCancel(username);
			}
			else
			{
				System.out.println("账号或密码错误!\n");
				conn.close();
				Delete();
			}
		}
	}

	public static void DeleteCancel(String username) throws SQLException//在数据库中删除注销后的账号信息
	{
		try
		{
			Connection conn = DriverManager.getConnection(Stu, User, Pwd);
			String sql = "delete from 登录注册表 where username=?";
			PreparedStatement sd = conn.prepareStatement(sql);
			sd.setString(1, username);
			sd.execute();
			conn.close();
			System.out.println("账号注销成功!\n");
			Main();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			System.out.println("账号注销失败!\n");
			Main();
		}
	}

	public static void Main() throws SQLException
	{
		System.out.println("1、账号登录;2、账号注册;3、修改密码;4、账号注销;0、退出");
		System.out.print("请输入选择:");
		String n = scnn.nextLine().trim();
		switch (n)
		{
			case "1":
				Login();
				break;
			case "2":
				Register();
				break;
			case "3":
				Change();
				break;
			case "4":
				Delete();
				break;
			case "0":
				System.out.println("程序已退出!");
				System.exit(1);
			default:
				Main();
				break;
		}
	}

	public static void main(String[] args) throws SQLException
	{
		Main();
	}
}


四、总结

以上就是全部的程序代码和相关说明,还有很多可以优化的地方,仅供参考和学习。感兴趣的小伙伴也可以去看我前面几期的文章,也是关于连接SQL数据库的。

你可能感兴趣的:(数据库,java,sqlserver,经验分享)