java+sqlserver實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
前提:
1.建立了與sqlserver數(shù)據(jù)庫(kù)的連接
(JTDS連接sqlserver數(shù)據(jù)庫(kù)的包jtds-1.2.7.jar)
2. 了解JDBC執(zhí)行SQL的語(yǔ)法
一.實(shí)現(xiàn)效果


二.實(shí)現(xiàn)代碼
1.DBUtil.java
說(shuō)明:直接復(fù)制必然出錯(cuò)。
因?yàn)橐B接自己的數(shù)據(jù)庫(kù),其中部分?jǐn)?shù)據(jù)說(shuō)明:
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
//本機(jī)V8 ip 192.168.223.1
//在數(shù)據(jù)庫(kù)中建立的一個(gè)登錄名 admin
//登錄名admin 的密碼 123123
//要連接的數(shù)據(jù)庫(kù) 物流寄存 (因?yàn)槭桥R時(shí)作業(yè)就先隨便找個(gè)數(shù)據(jù)庫(kù)放了)
DBUtil.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DBUtil
{
//連接數(shù)據(jù)庫(kù)
private static Connection getSQLConnection(String ip, String user, String pwd, String db)
{
Connection con = null;
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
//con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ip + ":1433/" + db + ";charset=utf8", user, pwd);
//jdbc:jtds:sqlserver://localhost:1433/dbname
//解決輸出中文亂碼
con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ip + ":1433/" + db , user, pwd);
} catch (ClassNotFoundException e)
{
e.printStackTrace();
} catch (SQLException e)
{
e.printStackTrace();
}
return con;
}
//查詢
public static String QuerySQL()
{
String result = "";
try
{ //10.0.2.2 android ip
//本機(jī)V8 ip 192.168.223.1
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
String sql = "select * from 學(xué)生信息表";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
//System.out.println(rs);
while (rs.next())
{//學(xué)號(hào)、姓名、班級(jí)、性別、專業(yè)、學(xué)院
String s1 = rs.getString("學(xué)號(hào)").trim();
String s2 = rs.getString("姓名").trim();
String s3 = rs.getString("班級(jí)").trim();
String s4 = rs.getString("性別").trim();
String s5 = rs.getString("專業(yè)").trim();
String s6 = rs.getString("學(xué)院").trim();
result += s1 + " " + s2 + " " + s3 + " " + s4+ " " + s5+" "+s6+"\n";
// System.out.println(s1 + " - " + s2);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e)
{
e.printStackTrace();
result += "查詢數(shù)據(jù)異常!" + e.getMessage();
}
return result;
}
//插入學(xué)生信息
public static String insert_student(String sno,String name,String banji,String sex,String shuanye,String xueyuan)
{//學(xué)號(hào)、姓名、班級(jí)、性別、專業(yè)、學(xué)院
String result = "";
try
{ //10.0.2.2 android ip
//本機(jī)V8 ip 192.168.223.1
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
String sql = "insert into 學(xué)生信息表 values ('"+sno+"','"+name+"','"+banji+"','"+sex+"','"+shuanye+"','"+xueyuan+"');";
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
result+="插入成功";
} catch (SQLException e)
{
e.printStackTrace();
result += "查詢數(shù)據(jù)異常!" + e.getMessage();
}
return result;
}
//刪除學(xué)生信息
public static String delete_student(String sno)
{//學(xué)號(hào)、姓名、班級(jí)、性別、專業(yè)、學(xué)院
String result = "";
try
{ //10.0.2.2 android ip
//本機(jī)V8 ip 192.168.223.1
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
String sql = "delete 學(xué)生信息表 where 學(xué)號(hào) = " + sno;
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
result+="刪除成功";
} catch (SQLException e)
{
e.printStackTrace();
result += "查詢數(shù)據(jù)異常!" + e.getMessage();
}
return result;
}
//按學(xué)號(hào)查詢
public static String QuerySQL_sno(String sno)
{
String result = "";
try
{ //10.0.2.2 android ip
//本機(jī)V8 ip 192.168.223.1 171.120.157.130
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
String sql = "select * from 學(xué)生信息表 where 學(xué)號(hào) = '"+ sno+"';";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{//學(xué)號(hào)、姓名、班級(jí)、性別、專業(yè)、學(xué)院
String s1 = rs.getString("學(xué)號(hào)").trim();
String s2 = rs.getString("姓名").trim();
String s3 = rs.getString("班級(jí)").trim();
String s4 = rs.getString("性別").trim();
String s5 = rs.getString("專業(yè)").trim();
String s6 = rs.getString("學(xué)院").trim();
result += s1 + " " + s2 + " " + s3 + " " + s4+ " " + s5+" "+s6+"\n";
// System.out.println(s1 + " - " + s2);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e)
{
e.printStackTrace();
result += "查詢數(shù)據(jù)異常!" + e.getMessage();
}
return result;
}
//按性別查詢
public static String QuerySQL_sex(String sex)
{
String result = "";
try
{ //10.0.2.2 android ip
//本機(jī)V8 ip 192.168.223.1 171.120.157.130
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
String sql = "select * from 學(xué)生信息表 where 性別 = '"+sex+"';";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{//學(xué)號(hào)、姓名、班級(jí)、性別、專業(yè)、學(xué)院
String s1 = rs.getString("學(xué)號(hào)").trim();
String s2 = rs.getString("姓名").trim();
String s3 = rs.getString("班級(jí)").trim();
String s4 = rs.getString("性別").trim();
String s5 = rs.getString("專業(yè)").trim();
String s6 = rs.getString("學(xué)院").trim();
result += s1 + " " + s2 + " " + s3 + " " + s4+ " " + s5+" "+s6+"\n";
// System.out.println(s1 + " - " + s2);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e)
{
e.printStackTrace();
result += "查詢數(shù)據(jù)異常!" + e.getMessage();
}
return result;
}
//按學(xué)院查詢
public static String QuerySQL_xueyuan(String xueyuan)
{
String result = "";
try
{ //10.0.2.2 android ip
//本機(jī)V8 ip 192.168.223.1 171.120.157.130
Connection conn = getSQLConnection("192.168.223.1", "admin", "123123", "物流寄存");
String sql = "select * from 學(xué)生信息表 where 學(xué)院 = '"+ xueyuan +"';";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
//System.out.println(rs);
while (rs.next())
{//學(xué)號(hào)、姓名、班級(jí)、性別、專業(yè)、學(xué)院
String s1 = rs.getString("學(xué)號(hào)").trim();
String s2 = rs.getString("姓名").trim();
String s3 = rs.getString("班級(jí)").trim();
String s4 = rs.getString("性別").trim();
String s5 = rs.getString("專業(yè)").trim();
String s6 = rs.getString("學(xué)院").trim();
result += s1 + " " + s2 + " " + s3 + " " + s4+ " " + s5+" "+s6+"\n";
// System.out.println(s1 + " - " + s2);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e)
{
e.printStackTrace();
result += "查詢數(shù)據(jù)異常!" + e.getMessage();
}
return result;
}
public static void main(String[] args)
{
QuerySQL();
}
}
2.操作程序test.java
說(shuō)明:只要DBUtil.java無(wú)錯(cuò)誤,并且可以利用DBUtil.java操作數(shù)據(jù)庫(kù),則這個(gè)test.java可以直接復(fù)制
import java.util.*;
public class test {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int flag = 0;
String sno = "", name = " ", banji = " ", sex = " ", shuanye = " ", xueyuan = " ";
System.out.println(" 學(xué)生信息管理程序 ");
System.out.println(" 0.查看控制面板 ");
System.out.println(" 1.查詢?nèi)w學(xué)生信息 ");
System.out.println(" 2.插入學(xué)生信息 ");
System.out.println(" 3.刪除學(xué)生 ");
System.out.println(" 4.修改學(xué)生信息 ");
System.out.println(" 5.查詢相關(guān)信息 ");
System.out.println(" 6.退出 ");
while(true) {
System.out.println(" 輸入要繼續(xù)執(zhí)行的操作:");
flag = in.nextInt();
in.nextLine();
if(flag == 6) break;
else {
switch (flag) {
case 0:
System.out.println(" 0.查看控制面板 ");
System.out.println(" 1.查詢?nèi)w學(xué)生信息 ");
System.out.println(" 2.插入學(xué)生信息 ");
System.out.println(" 3.刪除學(xué)生 ");
System.out.println(" 4.修改學(xué)生信息 ");
System.out.println(" 5.查詢相關(guān)信息 ");
System.out.println(" 6.退出 ");
break;
case 1://查詢?nèi)?
System.out.println("查詢?nèi)w學(xué)生信息:");
System.out.print(DBUtil.QuerySQL());
break;
case 2://插入信息
System.out.println("請(qǐng)輸入要插入的學(xué)生的信息(以空格隔開(kāi)):");
String str = in.nextLine();
String[] S = str.split(" ");
sno = S[0];
name = S[1];
banji = S[2];
sex = S[3];
shuanye = S[4];
xueyuan = S[5];
System.out.print(DBUtil.insert_student(sno, name, banji, sex, shuanye, xueyuan));
break;
case 3://刪除學(xué)生信息
System.out.println("請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):");
sno = in.nextLine();
System.out.print(DBUtil.delete_student(sno));
break;
case 4://修改學(xué)生信息
System.out.println("請(qǐng)輸入要修改的學(xué)生的學(xué)號(hào):");
sno = in.nextLine();
DBUtil.delete_student(sno);
System.out.println("請(qǐng)輸入要修改的學(xué)生的信息以空格隔開(kāi)(學(xué)號(hào)不可修改):");
String str2 = in.nextLine();
String[] S2 = str2.split(" ");
name = S2[0];
banji = S2[1];
sex = S2[2];
shuanye = S2[3];
xueyuan = S2[4];
DBUtil.insert_student(sno, name, banji, sex, shuanye, xueyuan);
System.out.println("修改之后的數(shù)據(jù):");
break;
case 5://查詢相關(guān)信息
System.out.println(" 1.按學(xué)院查詢 ");
System.out.println(" 2.按學(xué)號(hào)查詢 ");
System.out.println(" 3.按性別查詢 ");
int FLG = Integer.parseInt(in.nextLine());
//in.nextInt();
switch(FLG){
case 1 ://按學(xué)院查詢
System.out.println("要查詢的學(xué)院:");
String temp_xueyuan = in.nextLine();
System.out.print(DBUtil.QuerySQL_xueyuan(temp_xueyuan));
break;
case 2 ://按學(xué)號(hào)查詢
System.out.println("要查詢學(xué)生的學(xué)號(hào):");
String temp_sno = in.nextLine();
System.out.print(DBUtil.QuerySQL_sno(temp_sno));
break;
case 3://按性別查詢
System.out.println("要查詢的性別:");
String temp_sex = in.nextLine();
System.out.print(DBUtil.QuerySQL_sex(temp_sex));
break;
}
break;
}//switch
}//else
}
}
}
相關(guān)文章
Java程序圖形用戶界面設(shè)計(jì)之容器JFrame
圖形界面(簡(jiǎn)稱GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來(lái)說(shuō)在視覺(jué)上更易于接受,本篇精講Java語(yǔ)言中關(guān)于圖形用戶界面的基本容器JFrame2022-02-02
Java8通過(guò)Function獲取字段名的方法(獲取實(shí)體類的字段名稱)
Java8通過(guò)Function獲取字段名。不用再硬編碼,效果類似于mybatis-plus的LambdaQueryWrapper,對(duì)Java8通過(guò)Function獲取字段名相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09
mybatis if傳入字符串?dāng)?shù)字踩坑記錄及解決
這篇文章主要介紹了mybatis if傳入字符串?dāng)?shù)字踩坑記錄及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
JAVA實(shí)現(xiàn)多線程的兩種方法實(shí)例分享
這篇文章介紹了JAVA實(shí)現(xiàn)多線程的兩種方法實(shí)例分享,有需要的朋友可以參考一下2013-08-08
JAVA設(shè)計(jì)模式之調(diào)停者模式詳解
這篇文章主要介紹了JAVA設(shè)計(jì)模式之調(diào)停者模式詳解,調(diào)停者模式是對(duì)象的行為模式,調(diào)停者模式包裝了一系列對(duì)象相互作用的方式,使得這些對(duì)象不必相互明顯引用,從而使它們可以較松散地耦合,需要的朋友可以參考下2015-04-04
淺談spring使用策略模式實(shí)現(xiàn)多種場(chǎng)景登錄方式
本文主要介紹了spring使用策略模式實(shí)現(xiàn)多種場(chǎng)景登錄方式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
SpringBoot項(xiàng)目部署到阿里云服務(wù)器的實(shí)現(xiàn)步驟
本文主要介紹了SpringBoot項(xiàng)目部署到阿里云服務(wù)器的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06

