這兒有一個資料連線,大家看這兒有哪些問題
package tools;
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
import oracle.jdbc.pool.*;
public class Conn{
private Connection conn = null;
private Statement st = null;
private Statement st2 = null;
private ResultSet rs = null;
private PreparedStatement pst = null;
public Conn() throws Exception{
//'查詢連線池並連線
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@192.168.0.1:1521:oracle");
ods.setUser("username");
ods.setPassword("password");
conn = ods.getConnection();
}
public void close() throws Exception{
if(st != null){
st.close();
st = null;
}
if(pst != null){
st.close();
st = null;
}
conn.close();
}
public void createStatement() throws Exception{
st = conn.createStatement();
}
public void createStatement2() throws Exception{
st2 = conn.createStatement();
}
public void createStatementB() throws Exception{
st = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
}
public void setAutoCommit(boolean bl) throws Exception{
conn.setAutoCommit(bl);
}
public Connection getConnection() throws Exception{
return conn;
}
public void execute(String sql) throws Exception{
setAutoCommit(true);
pst = conn.prepareStatement(sql);
pst.executeUpdate();
conn.commit();
pst.close();
pst = null;
}
public ResultSet executeQuery(String s) throws Exception {
createStatement();
rs = st.executeQuery(s);
return rs;
}
public ResultSet executeQuery() throws Exception {
rs = pst.executeQuery();
return rs;
}
public ResultSet executeQueryB(String s) throws Exception {
createStatementB();
rs = st.executeQuery(s);
return rs;
}
public void insert(String s) throws Exception {
setAutoCommit(true);
pst = conn.prepareStatement(s);
}
public void executeInsert() throws SQLException {
pst.executeUpdate();
}
public void executeUpdate(String s) throws Exception {
setAutoCommit(true);
st = conn.createStatement();
st.executeUpdate(s);
}
public int getCount(String table,String condition) throws Exception{
String _condition = "";
int RowCount;
if(condition.length() != 0)
_condition = " where "+condition;
createStatement();
String sql = "select count(*) as RC from "+table+_condition;
rs = st.executeQuery(sql);
rs.next();
RowCount = rs.getInt("RC");
return RowCount;
}
public String[][] SelectData(
String Table,
String[] Column,
String[] Column_Attr,
String Condition,
String Order) throws Exception{
createStatement();
//求出個數
int count = getCount(Table,Condition);
String[][] Results = new String[count][Column.length];
String _Column = "";
for(int i = 0; i < Column.length; i++)
{
_Column+=Column+",";
}
_Column = _Column.substring(0,_Column.length()-1);
String _Condition = "";
if(Condition.length() != 0)
_Condition = " where "+Condition;
String sql = "select "+_Column+" from "+Table+_Condition+" "+Order;
rs = st.executeQuery(sql);
int m=0;
while(rs.next()) {
for(int i = 0; i < Column.length; i++){
if(Column_Attr.equalsIgnoreCase("String"))
Results[m] = rs.getString(Column);
else if(Column_Attr.equalsIgnoreCase("Int"))
Results[m] = String.valueOf(rs.getInt(Column));
else if(Column_Attr.equalsIgnoreCase("Date"))
if(rs.getDate(Column) != null)
Results[m] = rs.getDate(Column).toString();
else
Results[m] = "";
else if (Column_Attr.equalsIgnoreCase("Time"))
if(rs.getDate(Column) != null)
Results[m] = rs.getDate(Column).toString()+" "+rs.getTime(Column).toString();
else
Results[m] = "";
}
m++;
}
return Results;
}
public void setString(int i,String s) throws SQLException {
pst.setString(i, s);
}
public void setInt(int i, int j) throws SQLException{
pst.setInt(i,j);
}
public void setFloat(int i,float f) throws SQLException{
pst.setFloat(i,f);
}
public void setDouble(int i ,double d) throws SQLException{
pst.setDouble(i,d);
}
public void setLong(int i,long l) throws SQLException {
pst.setLong(i,l);
}
public void setDate(int i ,Date d) throws SQLException {
pst.setDate(i,d);
}
public void setBoolean(int i,boolean b) throws SQLException{
pst.setBoolean(i,b);
}
public void setTimestamp(int i,Timestamp t) throws SQLException{
pst.setTimestamp(i,t);
}
}
1。在執行關閉操作時,特別是執行insert操作時會有異常!
2。這個程式在寫法上有哪些不足,在思想上應有哪些值得改進!
3、用這個執行查詢操作時,資料庫有近10萬記錄時很慢,並透過常有記憶體不足的提示。如果查詢人數多的時候給導致伺服器崩掉!
請教各位高手賜教!我在這兒先謝了!
相關文章
- 快來看!這兒有個人比你還不要臉!
- 當Synchronized遇到這玩意兒,有個大坑,要注意!synchronized
- 這兒有20道大廠面試題等你查收面試題
- 這兒有一個使你網頁效能提升10倍的工具網頁
- 有關webscraper的問題,看這個就夠了Web
- [養兒防老]這個觀念你怎麼看?
- 資料庫安全問題?這裡有10個最常見的資料庫
- 為什麼我3歲的兒子有不良信用記錄?兒童資料洩露問題暗潮洶湧
- 大資料資訊保安問題有哪些大資料
- 想知道HBC到底怎麼回事兒?來看這個視訊吧!
- 這一年我有了妻兒卻落了技術 | 掘金年度徵文
- 如何讀取 JSON 裡巢狀的深層資料?我這兒有各語言通用方案JSON巢狀
- 有沒有小夥伴來風暴一下這個題
- 一個爬蟲的故事:這是人乾的事兒?爬蟲
- 好用的Mac筆記軟體有哪些?看這裡Mac筆記
- Spring Boot 第六彈,攔截器如何配置,看這兒~Spring Boot
- 有關指標的那些事兒《一》指標
- Java有哪些從業方向?分享這9個Java
- 測試- 就從這兒起步
- 租房注意事項,有哪些你不懂,程式猿看這裡……
- 看過來,這裡有一份企業資料完整遷移策略
- 監控資料庫連線遇到的一個小問題資料庫
- 資料洩露事件表明,Facebook 有一個“App 問題”事件APP
- 我們有線上社群啦!快來加入一起玩兒~
- 你有哪些寫了Flutter 之後才知道的事兒Flutter
- 遊戲想自個兒恰飯有多難?遊戲
- 有哪些免費好用api介面?看這篇文章就夠了API
- 跨域就這麼點事兒跨域
- 關於評分卡模型那些事兒,看這篇就對了模型
- 1400小時開源語音資料集,你想要都在這兒
- Windows無法配置此無線連線這個問題的解決辦法Windows
- 【知識分享】大資料安全問題有哪些型別大資料型別
- 訊息語音播報,微信語音自動播放,有點兒意思,可以看看這個應用
- Linux中連線埠命令有哪些?Linux
- mysql外連線有哪些型別MySql型別
- 移動端安全攻防那些事兒,看這場直播就夠了!
- 有錢途的人,有這10個特徵特徵
- 遠端連線軟體有哪些,遠端連線軟體有哪些值得推薦,如何使用?
- 從眾多雲搞親兒子,把乾兒子晾曬,看雲原生資料庫資料庫