📄 jdbcdataconn.java
字号:
//配置题库专用类
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
public class JdbcDataConn extends Frame implements ItemListener,ActionListener{
Connection conAnswer;
Statement cmdAnswer;
ResultSet rsAnswer;
boolean blnSuccessfulOpen=false;
String dbname="test";
String user="123";
String pass="s";
String db="";
Choice lstNames=new Choice();
Choice lstNames2=new Choice();
int i=0;
TextArea txtCon=new TextArea(200,200);
TextField txta=new TextField(100);
TextField txtb=new TextField(100);
TextField txtc=new TextField(100);
TextField txtd=new TextField(100);
TextField txte=new TextField(2);
Button btnAdd=new Button("增加");
Button btnEdit=new Button("保存");
Button btnDelete=new Button("清除");
Button btnCancel=new Button("取消");
Button btnExit=new Button("退出");
Label lblMessage=new Label(" ");
TextField lbl1=new TextField("试题类型");
Panel psb=new Panel(new GridLayout(1,2));
// public static void main(String args[])
// {
// JdbcDataConn thisApp=new JdbcDataConn();
//thisApp.createInterFace("test.mdb","","","access数据库直连");
// }
public void createInterFace(String dbname,String user,String pass,String db){
this.dbname=dbname;
this.user=user;
this.pass=pass;
this.db=db;
loadDatabase();
if(blnSuccessfulOpen){
setTitle("配置试题库");
//addWindowListener(new WindowAdapter(){
// public void windowClosing(WindowEvent event)
// {stop();
// System.exit(0);
// }});
setLayout(new BorderLayout());
//北区
Panel pnlTop=new Panel(new GridLayout(2,2,10,10));
pnlTop.add(new Label("题号"));
lstNames.insert("请选择题号",0);
pnlTop.add(lstNames);
pnlTop.add(new Label("试题类型"));
pnlTop.setBackground(new Color(244,255,254));
lstNames2.insert("单选",0);lstNames2.insert("多选",1);lstNames2.insert("判断",2);
lstNames2.addItemListener(this);
lstNames2.setVisible(false);
lbl1.setVisible(false);
psb.add(lbl1);
psb.add(lstNames2);
psb.setVisible(true);
pnlTop.add(psb);
add(pnlTop,"North");
//中区
Panel pnlMiddle=new Panel(new GridLayout(7,2,10,10));
pnlMiddle.getInsets();//得到panel的大小
pnlMiddle.setBackground(new Color(244,255,254));
pnlMiddle.add(new Label("题目"));
pnlMiddle.add(txtCon);
pnlMiddle.add(new Label("选项A"));
pnlMiddle.add(txta);
pnlMiddle.add(new Label("选项B"));
pnlMiddle.add(txtb);
pnlMiddle.add(new Label("选项C"));
pnlMiddle.add(txtc);
pnlMiddle.add(new Label("选项D"));
pnlMiddle.add(txtd);
pnlMiddle.add(new Label("答案:"));
pnlMiddle.add(txte);
setTextToNotEditable();
Panel pnlLeftButtons=new Panel(new GridLayout(0,2,10,10));
Panel pnlRightButtons=new Panel(new GridLayout(0,3,10,10));
pnlLeftButtons.add(btnAdd);
btnAdd.addActionListener(this);
pnlLeftButtons.add(btnEdit);
btnEdit.addActionListener(this);
pnlRightButtons.add(btnDelete);
btnDelete.addActionListener(this);
pnlRightButtons.add(btnCancel);
btnCancel.addActionListener(this);
btnCancel.setEnabled(false);
pnlRightButtons.add(btnExit);
btnExit.addActionListener(this);
pnlMiddle.add(pnlLeftButtons);
pnlMiddle.add(pnlRightButtons);
add(pnlMiddle,"Center");
add(lblMessage,"South");
lblMessage.setForeground(Color.red);
setSize(528,457);this.setLocation(200,200);
setVisible(true);
setBackground(new Color(244,255,254));
}
else
{
stop();
System.exit(-1);
} }
public Insets insets(){
return new Insets(40,15,15,15);
}
public void loadDatabase(){
if(this.db=="sqlserver")
{ try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundException err){
lblMessage.setText("驱动未找到");
}
try{
conAnswer=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+dbname,user,pass);
cmdAnswer=conAnswer.createStatement();
rsAnswer=cmdAnswer.executeQuery("select * from answer");
loadNames(rsAnswer);
blnSuccessfulOpen=true;
}
catch(SQLException error){
lblMessage.setText("Error:"+error.toString());
}}
if(this.db=="access")
{ try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException err){
lblMessage.setText("驱动未找到");
}
try{
conAnswer=DriverManager.getConnection("jdbc:odbc:"+dbname,user,pass);
cmdAnswer=conAnswer.createStatement();
rsAnswer=cmdAnswer.executeQuery("select * from answer");
loadNames(rsAnswer);
blnSuccessfulOpen=true;
}
catch(SQLException error){
lblMessage.setText("Error:"+error.toString());
}}
if(this.db=="mysql")
{ try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException err){
lblMessage.setText("驱动未找到");
}
try{
conAnswer=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/"+dbname+"?user="+user+"&password="+pass);
cmdAnswer=conAnswer.createStatement();
rsAnswer=cmdAnswer.executeQuery("select * from answer");
loadNames(rsAnswer);
blnSuccessfulOpen=true;
}
catch(SQLException error){
lblMessage.setText("Error:"+error.toString());
}}
if(this.db=="access数据库直连")
{ try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException err){
lblMessage.setText("驱动未找到");
}
try{
conAnswer=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+dbname,user,pass);
cmdAnswer=conAnswer.createStatement();
rsAnswer=cmdAnswer.executeQuery("select * from answer");
loadNames(rsAnswer);
blnSuccessfulOpen=true;
}
catch(SQLException error){
lblMessage.setText("Error:"+error.toString());
}}
}
public void loadNames(ResultSet rsAnswer){
try{
while(rsAnswer.next())
{ lstNames.add(rsAnswer.getString(1));i++;}
lstNames.addItemListener(this);
}
catch(SQLException error){
lblMessage.setText("显示题数出错"+error.toString());
}
}
public void itemStateChanged(ItemEvent event){
if(event.getSource()==lstNames)
{String strLastName=lstNames.getSelectedItem();
lblMessage.setText("");
try{
rsAnswer=cmdAnswer.executeQuery("select * from answer where index1='"+strLastName+"'");
//txtCon.setText(strLastName);
displayRecord(rsAnswer);
setTextToEditable();
}
catch(SQLException error){
lblMessage.setText("出错"+error.toString());
}}
else{
System.out.print("正常");
}
}
public void displayRecord(ResultSet rsAnswer){
try{
String ssss="0";
String ssss2=null;
if(rsAnswer.next()){
txtCon.setText(rsAnswer.getString(2).trim());
ssss=rsAnswer.getString(8).trim();
System.out.print(ssss);
if(ssss.equals("a"))
{lbl1.setText("单选");
lbl1.setVisible(true);
txta.setVisible(true);
txtb.setVisible(true);
txtc.setVisible(true);
txtd.setVisible(true);
}
if(ssss.equals("b"))
{lbl1.setText("多选");
lbl1.setVisible(true);
txta.setVisible(true);
txtb.setVisible(true);
txtc.setVisible(true);
txtd.setVisible(true);
}
if(ssss.equals("c"))
{lbl1.setText("判断");
lbl1.setVisible(true);
txta.setVisible(false);
txtb.setVisible(false);
txtc.setVisible(false);
txtd.setVisible(false);}
if((ssss2=rsAnswer.getString(7).trim())!=null)
txte.setText(ssss2);
if((ssss2=rsAnswer.getString(3).trim())!=null)
{txta.setText(ssss2);}
else
txta.setText("");
System.out.print("这是"+ssss2+"异常");
if((ssss2=rsAnswer.getString(4).trim())!=null)
{txtb.setText(ssss2);}
else
txtb.setText("");
if((ssss2=rsAnswer.getString(5).trim())!=null)
{txtc.setText(ssss2);}
else txtc.setText("");
if((ssss2=rsAnswer.getString(6).trim())!=null)
{txtd.setText(ssss2);}
else txtd.setText("");
lbl1.setEnabled(false);
lblMessage.setText("");
lstNames2.setVisible(true);
}
}
catch(SQLException error){
lblMessage.setText("出错"+error.toString());
}
}
public void actionPerformed(ActionEvent event){
Object objSource=event.getSource();
if(objSource==btnAdd&&event.getActionCommand()=="增加")
Add();//增加
else if(objSource==btnAdd)
Save();//确定
else if(objSource==btnEdit)
Edit();//保存
else if(objSource==btnDelete)
Delete();
else if(objSource==btnCancel)
Cancel();
else if(objSource==btnExit)
{stop();dispose();}
}
public void setTextToNotEditable(){
txtCon.setEditable(false);
txta.setEditable(false);
txtb.setEditable(false);
txtc.setEditable(false);
txtd.setEditable(false);
txte.setEditable(false);
}
public void setTextToEditable(){
txtCon.setEditable(true);
txta.setEditable(true);
txtb.setEditable(true);
txtc.setEditable(true);
txtd.setEditable(true);
txte.setEditable(true);
}
public void clearTextFields(){
txtCon.setText("");
txta.setText("");
txtb.setText("");
txtc.setText("");
txtd.setText("");
txte.setText("");
}
public void Add(){ //增加按钮的操作
lstNames2.setVisible(true);
lbl1.setVisible(false);
lblMessage.setText(" ");
setTextToEditable();
clearTextFields();
txtCon.requestFocus();//此方法为组件请求焦点
btnAdd.setLabel("确定");
btnCancel.setEnabled(true);
btnDelete.setEnabled(false);
btnEdit.setEnabled(false);
}
public void Save(){//增加增加按钮点击后变为确定按钮的操作
lstNames2.setVisible(false);
lbl1.setVisible(false);
if(txtCon.getText().length()==0||txtb.getText().length()==0)
lblMessage.setText("不能为空");
else{
try{
String s=String.valueOf(++i);
String leixing=lstNames2.getSelectedItem().trim();
lstNames2.setVisible(false);
lbl1.setVisible(false);
if(leixing.equals("单选"))
leixing="a";
if(leixing.equals("多选"))
leixing="b";
if(leixing.equals("判断"))
leixing="c";
cmdAnswer.executeUpdate("insert into answer(index1,con,a,b,c,d,e,f) values('"+s+"','"+txtCon.getText()+"','"+txta.getText()+"','"+txtb.getText()+"','"+txtc.getText()+"','"+txtd.getText().trim()+"','"+txte.getText().trim()+"','"+leixing+"')");
lstNames.addItem(s);
Cancel();
lblMessage.setText("添加成功");
}
catch(SQLException error){
lblMessage.setText("错误"+error.toString());i--;
}
}
}
public void Delete(){ //清除按钮的操作
lstNames2.setVisible(true);
lbl1.setVisible(false);
int intIndex=lstNames.getSelectedIndex();
String sd=lstNames.getSelectedItem();
System.out.print("sd"+sd);
try{ cmdAnswer.executeUpdate("delete from answer where index1='"+sd+"'");
lstNames.remove(intIndex);
lblMessage.setText("删除成功"); }
catch(SQLException error){
// System.out.print(error.toString());
}
}
public void Cancel(){ //撤销按钮的操作
lstNames2.setVisible(false);
lbl1.setVisible(false);
btnDelete.setEnabled(true);
btnEdit.setEnabled(true);
btnCancel.setEnabled(false);
btnAdd.setLabel("增加");
clearTextFields();
lblMessage.setText("");
}
public void Edit(){ //保存按钮的执行操作
lstNames2.setVisible(false);
lbl1.setVisible(true);
int intIndex=lstNames.getSelectedIndex();
if(intIndex==0)
lblMessage.setText("选择要修改的记录");
else{
String leixing=lstNames2.getSelectedItem().trim();
if(leixing.equals("单选"))
leixing="a";
if(leixing.equals("多选"))
leixing="b";
if(leixing.equals("判断"))
leixing="c";
String strLastName=lstNames.getSelectedItem();
try{
cmdAnswer.executeUpdate("update answer set con='"+txtCon.getText().trim()+"',a='"+txta.getText()+"',b='"+txtb.getText().trim()+"',c='"+txtc.getText().trim()+"',d='"+txtd.getText().trim()+"',e='"+txte.getText().trim()+"',f='"+leixing+"' where index1='"+strLastName+"'");
lblMessage.setText("修改成功");
}
catch(SQLException error){
lblMessage.setText("错误"+error.toString());
}
}
}
public void stop(){
try{
if(conAnswer!=null)
conAnswer.close();
}
catch(SQLException error){
lblMessage.setText("连接无法结束");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -