今天特意去重新学习了一下Java连接数据库的知识内容,以前也尝试过,但总是连接失败,然后就不了了之了。今天终于成功了,弄懂了原理后,没想到原来这么简单,一起来看看吧。
1、设置一下数据库连接信息,步骤和之前的差不多,创建的数据库都是同一个,用SQL Server身份验证登录,记住登录名和密码。
2、新建一个“账号登录”数据库,在里面创建一张“登录注册表”,设置好列名username、password和数据类型。
3、安装sqlJDBC驱动程序。【下载链接:https://pan.百度.com/s/1N_AeKykMSwA0YGavf8aMUA?pwd=TSGB
提取码:TSGB (“百度”改为“baidu”)】。下载后解压在Java编辑器安装路径下面,例如我的是安装在IDEA文件夹路径下的SQLServerTool文件夹里面。
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();
}
}
我这里讲两种常用的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();
}
}
在数据库表中插入一条数据。
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();
}
}
在数据库表中修改指定数据。
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();
}
}
删除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数据库的。