導航:首頁 > 編程語言 > java連接查詢

java連接查詢

發布時間:2023-08-15 22:12:47

⑴ 用java連接mysql實現對表中的數據查找,插入,修改等功能,

JDBC操作MySQL資料庫的步驟

1、准備MySQL資料庫驅動包:mysql-connector-java-5.0.8-bin.jar,一個項目中只能存在一個版本的驅動包
a、復制該驅動包,粘貼到項目中
b、選中項目里的驅動包,右鍵->Build Path->Add to Build Path
2、在類里寫代碼載入驅:決定連接哪種資料庫
a、Class.forName("com.mysql.jdbc.Driver");
b、必須進行異常處理:ClassNotFoundException
3、連接資料庫
a、Connection con=DriverManager.getConnection("連接字元串", "用戶名", "密碼");
b、連接字元串格式固定,不同資料庫,格式不同:jdbc:mysql://要連接的計算機名稱:埠號/要連接的資料庫名稱
c、必須進行異常處理:SQLException
4、拼寫要執行的sql語句,必須是可以在資料庫中執行的
5、創建執行sql語句的對象
a、Statement stmt=con.createStatement();
b、注意:Statement必須來自於java.sql包中
6、執行sql語句
a、執行insert、update和delete語句:int row=stmt.executeUpdate(sql);返回影響行數
b、執行查詢語句:ResultSet rs=stmt.executeQuery(sql);返回查詢結果
c、執行任意sql語句(DDL、DCL、DML和DQL等)
7、對執行結果進行處理
a、執行更新語句:判斷影響行數是否為0,0表示失敗,非0表示成功
b、對查詢結果進行處理:
1) 結果集需要先移動、後取值 :rs.next();int id=rs.getInt(1);
String name=rs.getString("loginName");
2) 結果集有多條時,需要循環操作:
while(rs.next()){ System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)+"\t"+rs.getInt(5));
}
3) 不確定是否有查詢結果時:if(rs.next()){說明有查詢結果}else{沒有查詢結果}
4) 使用了聚合函數,一定有查詢結果,查詢結果是一行一列:
rs.next();
int result=rs.getInt(1);
注意:結果集取值時取出的時查詢語句中包含的欄位,與表中欄位無關
9、關閉相關對象(先關閉結果集對象、在關閉執行語句對象,最後關閉連接對象)
例如:執行查詢語句
Scanner input=new Scanner(System.in);
System.out.print("請輸入登錄名: ");
String name=input.next();
System.out.print("請輸入密碼: ");
String pass=input.next();

try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdb", "root", "root");
String sql="select COUNT(*) from UserInfo where loginName='"+name+"' and loginPass='"+pass+"'";
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
rs.next();
int result=rs.getInt(1);
if(result!=0){
System.out.println("登錄成功!");
}else{
System.out.println("用戶名或密碼錯誤,請重新登錄!");
}
rs.close();
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
System.out.println("載入驅動錯誤:"+e.getMessage());
} catch (SQLException e) {
System.out.println("資料庫操作錯誤:"+e.getMessage());
}
執行添加、修改和刪除語句
try {
//載入驅動
Class.forName("com.mysql.jdbc.Driver");
//連接資料庫
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdb", "root", "root");
//拼寫要執行的sql語句
String sql="update UserInfo set loginPass='111' where loginName='a'";
//String sql="insert UserInfo values(default,'test','test')";
//String sql="delete from UserInfo where loginName='a'";
//創建執行語句對象
Statement stmt=con.createStatement();
//執行
int row=stmt.executeUpdate(sql);
//處理結果
if(row==0){
System.out.println("修改失敗!");
}else{
System.out.println("修改成功!");
}
//關閉
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
System.out.println("驅動載入錯誤:"+e.getMessage());
} catch (SQLException e) {
System.out.println("資料庫操作錯誤:"+e.getMessage());
}

⑵ Java中如何實現與後台資料庫的連接

用JAVA連接資料庫主要有兩種方式,一是用JDBC-ODBC橋來連接,二是用脊旅相關廠商提供的相應驅動程序來連接,首先談談第一種連接。 x0dx0ax0dx0aJDBC-ODBC橋接器是用JdbcOdbc.Class和一個用於訪問ODBC驅動程序的本地庫實現的。對於WINDOWS平台,該本地庫是一個動態連接庫DLL(JDBCODBC.DLL)。 x0dx0ax0dx0a由於JDBC在設計上與ODBC很接近。在內部,這個驅動程序把JDBC的方法映射到ODBC調用上,這樣,JDBC就可以和任何可用的ODBC驅動程序進行交互了。這種橋接器的優點是,它使JDBC目前有能力訪問幾乎所有的資料庫。通行方式如圖所示: x0dx0ax0dx0a應用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC層---數據源 x0dx0ax0dx0a具體操作方法為: x0dx0ax0dx0a首先打開控制面板的管理工具,打開數據源(ODBC),在用戶DSN裡面添加數據源(即你要連接的資料庫的名字),在這里假定連接SQL SERVER 2000的GoodsSupply資料庫。名稱填寫你要連接的資料庫的名稱(GoodsSupply),然後逐步設置,如果選用了使用SQL-SERVER密叢賀碼認證的話,就要輸入相應的用戶名及密碼連接到資料庫。一路下一步設置完成。 x0dx0ax0dx0a在JAVA裡面編寫程序進行測試,在這里我的程序是讓用戶輸入任意的表名與與列名,把該列的所有數據輸出。源代碼如下: x0dx0ax0dx0aimport java.io.BufferedReader; x0dx0aimport java.io.InputStreamReader; x0dx0aimport java.sql.*; x0dx0ax0dx0apublic class ODBCBridge { x0dx0ax0dx0apublic static void main(String[] args) { x0dx0aString url="jdbc:odbc:GoodsSupply"; x0dx0aStatement sm=null; x0dx0aString command=null; x0dx0aResultSet rs=null; x0dx0aString tableName=null; x0dx0aString cName=null; x0dx0aString result=null; x0dx0aBufferedReader input=new BufferedReader(new InputStreamReader(System.in)); x0dx0atry { x0dx0atry { x0dx0aClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //載入驅動 x0dx0a}catch(ClassNotFoundException e){ x0dx0aSystem.out.println("Can not load Jdbc-Odbc Bridge Driver"); x0dx0aSystem.err.print("ClassNotFoundException:"); x0dx0aSystem.err.println(e.getMessage()); x0dx0a} x0dx0aConnection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000認證 x0dx0aDatabaseMetaData dmd=con.getMetaData(); //DMD為連接的滲野派相應情況 x0dx0aSystem.out.println("連接的資料庫:"+dmd.getURL()); x0dx0aSystem.out.println("驅動程序:"+dmd.getDriverName()); x0dx0asm=con.createStatement(); x0dx0aSystem.out.println("輸入表名"); x0dx0atableName=input.readLine(); x0dx0awhile(true) { x0dx0aSystem.out.println("輸入列名(為空時程序結束):"); x0dx0acName=input.readLine(); x0dx0aif(cName.equalsIgnoreCase("")) x0dx0abreak; x0dx0acommand="select "+cName+" from "+tableName; x0dx0ars=sm.executeQuery(command); //執行查詢 x0dx0aif(!rs.next()) x0dx0aSystem.out.println("表名或列名輸入有誤"); x0dx0aelse { x0dx0aSystem.out.println("查詢結果為:"); x0dx0ado x0dx0a{ x0dx0aresult=rs.getString(cName); x0dx0a//資料庫語言設置為中文,不用轉換編碼 x0dx0a//result=new String(result.getBytes("ISO-8859-1"),"GB2312"); x0dx0aSystem.out.println(result); x0dx0a}while(rs.next()); x0dx0a} x0dx0a} x0dx0a}catch(SQLException ex) { x0dx0aSystem.out.println("SQLException:"); x0dx0awhile(ex!=null) { x0dx0aSystem.out.println("Message:"+ex.getMessage()); x0dx0aex=ex.getNextException(); x0dx0a} x0dx0a}catch(Exception e) { x0dx0aSystem.out.println("IOException"); x0dx0a} x0dx0a} x0dx0a}

⑶ java線程中使用mysql連接查詢資料庫

不建議這樣做,一般不符合開發規范,如果這樣的話,你想想在業務量多的情況下,多個線程如果不控制,資料庫連接會將資料庫伺服器爆掉的,會影響業務的
常規做法:資料庫連接池(rid了解一下),據某些統計哈,真正用來做查詢的資源不超過整個查詢資料庫的生命周期的30%,大部分時間都用開創建連接關閉連接等操作,如果這個時候建立資料庫連接池的話,可以有效的將這部分時間釋放掉

閱讀全文

與java連接查詢相關的資料

熱點內容
pubg國際服伺服器有什麼區別 瀏覽:502
怎麼打開文件夾自動刪除 瀏覽:681
php中英文切換 瀏覽:441
php168數據 瀏覽:75
水壓縮後有彈性 瀏覽:42
蘇州阿里雲伺服器數據備份 瀏覽:522
消息提示音怎麼設置安卓 瀏覽:277
怎麼去掉安卓手機的小圓圈 瀏覽:474
女程序員每天教你一招 瀏覽:590
葯劑學pdf下載 瀏覽:477
打開的共享文件夾少東西 瀏覽:643
芝麻黑頭解壓去除視頻 瀏覽:186
光明與黑暗怎麼進入伺服器 瀏覽:659
20歲的程序員 瀏覽:238
p4備份伺服器是什麼意思 瀏覽:350
棗庄空氣壓縮機維修 瀏覽:621
色弱程序員 瀏覽:415
oraclelinux修改ip 瀏覽:665
雲上城之歌九游通用伺服器 瀏覽:348
加密貨幣需要投資嗎 瀏覽:533