java链接sqlsever实现某系统的登录注册

大一计算机课的结课翻转任务是链接数据库,完成某系统的登录注册。

1.下载驱动,导入、加载驱动类
2.建立连接
3.发送sql语句
4.接收返回结果

java链接sqlsever的话需要jdbc驱动类。
我们首先下载jdbc驱动类,这里是笔者用的驱动类分享,
分享码是 yjh9
jdbc
下载之后解压备用

笔者选择Eclipse来编写,
首先新创一个project,然后右键Package Explorer中新建的文件。
选择Build Path 然后Add External Archivers to Java Built Path;如图:
在这里插入图片描述
选择准备好的jdbc驱动类加入(下图2个都要加入)。
在这里插入图片描述
然后就到了正片代码实现。打开我们的ssms,打开我们的sql用户登录。

右键服务器名称选择属性
在这里插入图片描述
点击安全性,大块sql server 和Windows身份验证模式;
在这里插入图片描述
在这里插入图片描述
选择服务器下的安全性查看登录名,双击sa
在这里插入图片描述
设置你想要的密码.
新建查询,创建一个数据库,如果有就跳过这一步,
这里我创建了一个名为 s 的数据库.

打开sqlsever配置管理器,点击sql网络配置,点击TCP/IP
在这里插入图片描述
将ip地址全部改为127.0.0.1,TCP端口改为1433.然后重启sql
这里的ip地址其实就是本机,端口号端口号可以不为1433,但注意不要与其他程序端口冲突,且后面贴下的源码中有一处需要更改,具体可以看注释.

在这里插入图片描述

到这里前期准备工作就做好了,我们打开Eclipse编写代码。

package ssmstest;

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

public class ssmstest {
	public static Connection dbConn;
	public static Statement stmt;
	public static void main(String[] args) 
	{
		//加载驱动类,连接数据库
		getjdbc();
		getsqlconnection();
		createtable();
		mainui();
	}
	//创建表
	public static boolean createtable() 
	{
		try 
		{
			stmt=dbConn.createStatement();
			//判断是否存在目标表,若无就创建一个
			int i=stmt.executeUpdate("select count(1) from sys.objects where name = 'count_pwd'");
			if(i!=1)
			{
				stmt.executeUpdate("create table count_pwd (countname varchar(10) UNIQUE not null,countpwd varchar(10) not null);");
			}
		}
		catch(SQLException e){}
		return false;
	}
	//加载jdbc驱动类
	public static boolean getjdbc()
	{
		try 
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			return true;
		}
		catch(Exception e) 
		{
			return false;
		}	
	}
	//连接数据库
	public static  boolean getsqlconnection()
	{
		try 
		{
			 //注意这里的1433是端口号,若你在上面的操作中更改过,请更改为你更改后的端口
				 dbConn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=s","sa","123456789");
			return true;
		}
		catch(SQLException e)
		{
			return false;
		}
	}
	//主界面
	public static void mainui()
	{
		while(true)
		{
			System.out.println("1.已有账号,直接登录\n2.无账号,注册");
			Scanner in=new Scanner(System.in);
			int operation=in.nextInt();
			if(operation==1)
			{
				logon();
				break;
			}
			else if(operation==2)
			{
				registernew();
				break;
			}
			else 
			{
				System.out.println("错误操作!请重新输入!");
			}
		}
	}
	//注册账户
	public static boolean registernew()
	{
		while(true)
		{
			System.out.println("输入您想创建的账户:");
			Scanner scanner=new Scanner(System.in);
			String count = scanner.nextLine();
			//判断账户是否符合格式
			if(count.equals(""))
			{
				System.out.println("请输入账户!");
				continue;
			}
			else if(count.length()>10)
			{
				System.out.println("您的账号过长,请选择十位以内的账户!");
				continue;
			}
			System.out.println("输入您的密码:");
			String pwd = scanner.nextLine();
			//判断密码是否符合格式
			if(pwd.equals(""))
			{
				System.out.println("请输入密码!");
				continue;
			}
			else if(pwd.length()>10)
			{
				System.out.println("您的密码过长,请选择十位以内的密码!");
				continue;
			}
			String values="values("+count+","+""+pwd+")";
			try 
			{
				int i=stmt.executeUpdate("insert into count_pwd(countname,countpwd)" +values);
				if(i==0)
				{
					System.out.println("已存在账户!");
					continue;
				}
				else
				{
					System.out.println("创建成功!");
					break;
				}
			} catch (SQLException e) {e.printStackTrace();}
		}
		mainui();
		return true;
	}
	//登录界面
	public static boolean logon() 
	{
		while(true)
		{
			System.out.println("输入您的账户:");
			Scanner scanner=new Scanner(System.in);
			String count = scanner.nextLine();
			//判断账户是否符合格式
			if(count.equals(""))
			{
				System.out.println("请输入账户!");
				continue;
			}
			else if(count.length()>10)
			{
				System.out.println("您的账号过长,请选择十位以内的账户!");
				continue;
			}
			System.out.println("输入您的密码:");
			String pwd =scanner.nextLine();
			//判断密码是否符合格式
			if(pwd.equals(""))
			{
				System.out.println("请输入密码!");
				continue;
			}
			else if(pwd.length()>10)
			{
				System.out.println("您的密码过长,请选择十位以内的密码!");
				continue;
			}
			
			String countname="countname='"+count+"'";
			try {
				ResultSet set = stmt.executeQuery("select countname,countpwd from count_pwd where "+countname);
				if(set.getRow()<0)
				{
					continue;
				}
				if(!set.next())
				{
					System.out.println("账户不存在!");
					continue;
				}
				if(set.getString(2).equals(pwd))
				{
					System.out.println("登录成功!");
					set.close();
					stmt.close();
					dbConn.close();
					break;
				}
				else
				{
					System.out.println("密码错误!");
				}
			} 
			catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return true;

	}
}

有需要的可以直接ctrl c,v。实验一下,注意在 getsqlconnection()这个方法中 s 改为你的数据库的名字,“sa”应该不变,“123456789”改为你刚才设置的密码。
这里仅展示demo解释会在另一篇文章中。

  • 12
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现JAVA连接SQL Server并实现登录功能,需要按照以下步骤进行操作: 1. 下载并安装SQL Server JDBC驱动程序:从Microsoft官网下载最新版本的SQL Server JDBC驱动程序,并将其添加到Java项目中。 2. 创建数据库表:在SQL Server中创建一个用户表,包含用户名和密码列。 3. 编写Java代码:在Java中编写代码以连接SQL Server并验证用户输入的用户名和密码。 以下是连接SQL Server并实现登录功能的示例代码: ``` import java.sql.*; public class Login { public static void main(String[] args) { String url = "jdbc:sqlserver://localhost:1433;databaseName=mydb"; String user = "sa"; String password = "password"; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); String username = "testuser"; String password = "testpass"; String query = "SELECT COUNT(*) FROM users WHERE username = '" + username + "' AND password = '" + password + "'"; ResultSet rs = stmt.executeQuery(query); if (rs.next()) { int count = rs.getInt(1); if (count == 1) { System.out.println("Login successful."); } else { System.out.println("Invalid username or password."); } } con.close(); } catch (Exception e) { System.out.println(e); } } } ``` 在上面的代码中,我们首先定义了连接SQL Server所需的URL、用户名和密码。然后,我们使用JDBC驱动程序加载类并创建数据库连接。接下来,我们使用创建的Statement对象执行查询,以检查用户输入的用户名和密码是否正确。如果查询返回一个计数值为1,表示用户已验证成功,否则用户验证失败。 请注意,上述代码中的查询语句存在SQL注入漏洞,为了避免这种漏洞,建议使用参数化查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值