定义全局变量 className、url、user、password
定义为空值的连接接口、查询器、结果集 :connection statement resultset
String className="com.mysql.cj.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/information?useSSL=false&serverTimezone=UTC";
String user="root";
String password="shangjie1023";
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
类型为ResultSet的query 查询方法 ,
加载驱动,添加到trycatch里
trycatch 创建数据库连接接口,构件查询器,定义resultset结果集,通过执行SQL语句获取到数据库数据。
最后返回resultset结果集
public ResultSet query(String sql)
{
try {
Class.forName(className);
} catch (ClassNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
}
try {
Connection connection=DriverManager.getConnection(url, user, password);
Statement statement=connection.createStatement();
resultSet=statement.executeQuery(sql);
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
return resultSet;
}
类型为int 类型的有返回值参数的Update注入方法:
定义局部整型变量k;
加载驱动,添加到trycatch里
trycatch 创建数据库连接接口,构件查询器
这里与query方法不同 ,注入方法是用变量k获取到SQL语句更新数据库。
最后返回的也是变量k
public int update(String sql)
{
int k=0;
try {
Class.forName(className);
} catch (Exception e) {
// TODO: handle exception
}
try {
connection=DriverManager.getConnection(url, user, password);
Statement statement=connection.createStatement();
k=statement.executeUpdate(sql);
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
return k;
}
定义关闭数据库方法,依次关闭结果集、构造器、连接接口 ,还是放到try catch里
public void close()
{
try {
if(resultSet!=null)
{
resultSet.close();
}
if (statement!=null) {
statement.close();
}
if (connection!=null) {
connection.close();
}
} catch (Exception e) {
// TODO: handle exception
}
建立jframe画布之后
定义全局变量name 、pw 获取到jtextfield的文本转化成string类型,去掉空格;
判断 name pw 用户名 密码 是否为空 如果是 输出为空,return 中止执行
在try catch 里,定义Tool 工具类的对象tool;
定义 SQL语句 查询用户名信息;SQL语句变量名sql;
定义resultset结果集,通过tool对象获取query方法实现SQL语句的查询;
把结果集游标回到最后;
定义一个整形变量count来获取结果集的行数;
如果count的值大于零 ,则说明用户存在,可以登录
<把结果集游标回到最开始,
对结果集的每一行进行遍历,执行while操作
从数据库中获取到用户键入用户名对应的密码,定义dbpassword 通过结果集获取密码属性列对应的字符串,
如果键入密码与数据库获取密码相同,登录成功;
不相同,登录失败 。>
如果count为零,则查询不到用户名信息,提示登录失败。
最后调用tool对象的close方法,关闭数据库。
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
final String name=jTextField1.getText().toString().trim();
final String pw=jTextField2.getText().toString().trim();
if(name.equals(""))
{
System.out.println("用户名为空");
return;
}
if (pw.equals(null)) {
System.out.println("密码为空");
return;
}
try {
Tool tool=new Tool();
String sql="select * from info where name='"+name+"'";
ResultSet resultSet=tool.query(sql);
resultSet.last();
int count=resultSet.getRow();
if(count>0)
{//用户存在
resultSet.beforeFirst();//游标回到最开始
while(resultSet.next())
{//从数据库里获取密码 给db
String dbpassword=resultSet.getString("password");
if(dbpassword.equals(pw))
{
//登录成功
System.out.println("登录成功");
}
else {
//密码错误
System.out.println("登录失败");
}
}
}
else {
//用户名错误
System.out.println("登录失败");
}
tool.close();
} catch (SQLException e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
});
定义全局变量name 、pw 获取到jtextfield的文本转化成string类型,去掉空格;
在try catch 里,定义Tool 工具类的对象tool;
定义SQL语句 ,查找用户输入用户名,看是否注册存在;
定义resultset结果集,通过tool对象获取query方法实现SQL语句的查询;
把结果集游标回到最后;
定义一个整形变量count来获取结果集的行数;
如果count的值大于零 ,则说明用户存在,不可以注册了,提示用户已注册;
如果不存在的话,
定义SQL语句 执行插入功能 ;这里的SQL语句变量名为sql1;
定义一个整型变量k,获取到tool对象调用的Update方法,进行注入;
如果k大于零,则说明,插入成功;
否则插入失败。
最后,调用tool对象的close方法关闭数据库。
jButton2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
try {
final String name=jTextField1.getText().toString().trim();
final String pw=jTextField2.getText().toString().trim();
Tool tool=new Tool();
String sql="select * from info where name='"+name+"'";
ResultSet resultSet=tool.query(sql);
resultSet.last();
int c=resultSet.getRow();
if (c>0) {
System.out.println("用户名已存在");
}
else {
String sql1="insert into info(name,password) values('"+name+"','"+pw+"')";
int k=tool.update(sql1);
if(k>0)
{
System.out.println("注册成功");
}
else {
System.out.println("注册失败");
}
tool.close();
}
} catch (SQLException e2) {
// TODO: handle exception
e2.printStackTrace();
}
}