大一计算机课的结课翻转任务是链接数据库,完成某系统的登录注册。
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;
}
}