【数据库系统】嵌入式SQL语言查询编程
在这里插入代码片
import java.sql.*;
import java.util.Scanner;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class test1207 {
static String JDriver = "";// SQL数据库引擎
static String connectDB = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=嵌入式SQL语言实验";// 数据源
static String user = "sa";//用户名
static String password = "your password";//用户密码
/*初始化数据函数*/
public static void insert(Statement stmt) throws SQLException {
try {
System.out.println("开始初始化数据");
String a1 = "INSERT INTO S VALUES('180400001','金小兵','男',21,'威海')"
+"INSERT INTO S VALUES('180400002','李旺旺','男',21,'杭州')"
+"INSERT INTO S VALUES('180400003','刘潇','女',20,'威海')"
+"INSERT INTO S VALUES('180400003','王波','男',18,'洛阳')"
+"INSERT INTO S VALUES('180400004','陈吉吉','女',20,'海门')";// 初始化数据SQL语句
stmt.executeUpdate(a1);// 执行SQL命令对象
System.out.println("初始化数据成功");
}catch(SQLException e) {
e.printStackTrace();
System.out.println("初始化错误");
}
}
/*执行查询操作函数*/
final public static String select(String input) throws SQLException{
String output="SNO SNAME SSEX SAGE SADDR \n";//输出表头
try {
/*连接数据库*/
Statement stmt;//命令对象
Connection con = DriverManager.getConnection(connectDB, user, password);// 连接数据库对象
stmt = con.createStatement();
System.out.println("select-连接数据库成功");
/*查询语句,包含模糊查询*/
String sel="SELECT * FROM S WHERE SADDR LIKE '%"+input+"%'";//数据查询语句
ResultSet rst=stmt.executeQuery(sel);
/*获取resultset中的数据,按照指定格式输出*/
int i=0;
String[] arr=new String[10];
while(rst.next()) {//依次获取结果中每个元组的属性,以元组为单位存储
String sno=rst.getString(1);
String sname=rst.getString(2);
String ssex=rst.getString(3);
String sage=rst.getString(4);
String saddr=rst.getString(5);
arr[i]=sno+" "+sname+" "+ssex+" "+sage+" "+saddr+"\n";
i++;
}
for(int j=0;j<i;j++) {//输出字符串
output=output+arr[j];
}
}catch(SQLException e) {
e.printStackTrace();
System.out.println("查询错误");
}
return output;
}
/*用户界面,点击button时执行select函数*/
static void frame(final Statement stmt) throws SQLException {
JFrame frame=new JFrame("学生信息系统");
JButton search=new JButton("查询");
JPanel left=new JPanel();//左部面板
JPanel right=new JPanel();//右部面板
final TextArea show_rst=new TextArea();
JLabel result=new JLabel(" 结果显示列表 ");
JLabel input=new JLabel(" 输入家庭地址 ");
final TextField show_input=new TextField();
frame.setLayout(new GridLayout());
frame.add(left);
frame.add(right);//左右面板
JPanel p1=new JPanel();
JPanel p2=new JPanel();
right.setLayout(new BorderLayout());
left.setLayout(new BorderLayout());
result.setFont(new Font("宋体",Font.BOLD,15));
p1.add(result);
left.add(p1,BorderLayout.NORTH);//"结果显示列表"
left.add(show_rst,BorderLayout.CENTER);//结果文本框
show_rst.setForeground(new Color(17,85,204));
show_rst.setFont(new Font("宋体",Font.BOLD,17));
input.setFont(new Font("宋体",Font.BOLD,15));
p2.add(input);
right.add(p2,BorderLayout.NORTH);//"输入家庭地址"
right.add(show_input,BorderLayout.CENTER);//输入文本框
show_input.setFont(new Font("宋体",Font.BOLD,17));
show_input.setForeground(new Color(17,85,204));
JPanel p=new JPanel();
p.add(search);
right.add(p,BorderLayout.SOUTH);
frame.setVisible(true);
frame.setLocation(280, 40);//设置窗口出现的位置
frame.setSize(800,400);//窗口大小
/*鼠标点击事件*/
search.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
System.out.println("事件开始响应");
String in=show_input.getText();//获取用户的输入
String out=select(in);//执行查询操作
System.out.println("out:"+out);
show_rst.setText(out);//结果在界面中输出
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
public static void main(String[] args) {
/*加载数据库引擎*/
try {
Class.forName(JDriver);// 加载数据库引擎,返回给定字符串名的类
} catch (ClassNotFoundException e) {
System.out.println("加载数据库引擎失败");
System.exit(0);
}
System.out.println("数据库驱动成功");
/*创建表*/
try {
Connection con = DriverManager.getConnection(connectDB, user, password);// 连接数据库对象
System.out.println("连接数据库成功");
Statement stmt = con.createStatement();// 创建SQL命令对象
stmt = con.createStatement();
System.out.println("开始创建表");
String query = "create table S(SNO CHAR(9),SNAME CHAR(10),SSEX CHAR(2),SAGE smallint,SADDR CHAR(20))";// 创建表SQL语句
stmt.executeUpdate(query);// 执行SQL命令对象
System.out.println("表创建成功");
/*调用插入和查询操作函数*/
insert(stmt);//插入学生数据
frame(stmt);//含用户界面的查询操作,点击button的时候调用select进行查询
/*关闭连接*/
stmt.close();// 关闭命令对象连接
con.close();// 关闭数据库连接
System.out.println("关闭数据库连接");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库连接错误");
System.exit(0);
}
}
}