導航:首頁 > 編程語言 > java動態sql

java動態sql

發布時間:2022-04-20 14:05:24

① 在java程序中怎樣動態的檢查SQL語句是否正

在Java程序中怎樣動態的檢查SQL語句是否正
String sql = "SELECT 角色 FROM userinfo WHERE 員工編號='A001' AND 密碼='a'";
try {
ResultSet res = stmt.executeQuery(sql);

while (res.next()) { // 循環輸出<a href="https://www..com/s?wd=%E7%BB%93%E6%9E%9C%E9%9B%86&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">結果集</a>
String role = res.getString("角色"); //這里可以根據欄位名稱得到該記錄的角色的值
}
} catch (Exception e) {
e.printStackTrace();
}

② java用sql語句動態的往表裡面添加欄位,之後怎麼能動態的讀寫新欄位的數據

用SQL語句添加表欄位:alter table 表名add 欄位名 欄位類型;
用select name from syscolumns where id=object_id(表名)查找出所有的表欄位。然後再使用SELECT 查找到的欄位 from 表名。
使用ResultSet動態讀取資料庫數據。ResultSet 是一個迭代模式的動態連接容器。迭代模式的容器遍歷方式:

while(rs.next()){
//循環內容
}
rs.next()返回值是一個布爾值,表示迭代容器中是否還有下一條數據,即在迭代過程中是否已經到結尾。直到迭代集合中再無數據rs.next()返回false;

③ Java怎樣調用動態sql語句

java調用存儲過程?

可以。

④ java連接sql資料庫。實現增刪改查怎麼寫。誰有實例

java連接資料庫,你可以用一些框架,比如hibernate,iBATIS等,這樣方便一點,否則你就用JDBC吧,自己寫sql語句:
JDBC連接資料庫
•創建一個以JDBC連接資料庫的程序,包含7個步驟:
1、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
•連接URL定義了連接資料庫時的協議、子協議、數據源標識。
•書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
3、創建資料庫的連接
•要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,
該對象就代表一個資料庫的連接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和
密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
•要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3
種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句
,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或
DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的
語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
• ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些
行中數據的訪問。
• 使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
}
(列是從左到右編號的,並且從列1開始)
7、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲
明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

⑤ java動態連接sql資料庫的時候com.microsoft.sqlserver.jdbc.SQLServerException: 必須聲明表變數 "@P0"。

樓主,你是講表名作為參數傳進去了嗎?「必須聲明表變數」好像是說你得表名沒獲取到,沒有錯誤信息和代碼不好確定,不過我跟你同樣的錯誤,我的是表名獲取的時候用的#{tableName}改成${tableName}就好了。

⑥ 用java寫一個程序,實現對SQL資料庫的動態表進行定時查詢

你這跟struts2沒關系,需要一個定時器,定時去跑你的查詢庫表代碼就OK了。

如果你的程序是需要將查詢結果展示在jsp頁面上,你需要在jsp頁面上使用js寫定時器代碼,參考SetInterval方法。

如果你的程序是桌面應用程序,你可以使用java的定時器Timer。當然,你的項目中如果使用了spring,那有更好的解決方案Quartz。

具體問題要具體分析了。

⑦ 關於Java的sql動態參數

String sql = "select * from stuInfo where id = ? and name = ?";
Object[] params = {id,name};
public int executeSQL(String sql,Object[] params){
PreparedStatement psmt =conn.prepareStatement(sql);
if(params != null){
for(int i = 0 ;i<params.length;i++){
psmt.setObject((i+1),params[i]);
}
}

}

⑧ Java動態sql語句拼接

Map<String,Boolean> map = new HashMap<String,Boolean>();

Set<Entry<String, Boolean>> ens = map.entrySet();
StringBuilder sb = new StringBuilder();
if(ens != null && ens.size() > 0){
for(Entry<String, Boolean> en: ens){
if(en.getValue()){
sb.append("'").append(en.getKey()).append("',");
}
}
}
String names = sb.toString();
if(names.length() > 0){
names = names.substring(0, names.length()-1);//去掉最後一個逗號
String sql = "select * from stuent t1 where t1.name in("+names+")";
System.out.println(sql);
}else{
System.out.println("沒有及格的學生");
}

⑨ java開發sql復用的問題

有些sql查詢可能差別就一兩個欄位,這種可以多個方法用一個sql,改變參數就OK,但是這種情況存在一個問題,就是在某個方法參數變更的時候,擴展不太好
一個方法對應一條sql就是擴展比較好,而且mybatis應該可以抽取sql相同的部分嘛,多次用到的相同sql部分抽取出來就好

⑩ java中如何處理多條件的sql查詢語句

一般多個條件的時候,處理方式是 select * from table where 1 = 1先寫上這樣一個條件,這樣你以後的條件就可以直接用 if判斷了,比如現在有A ,B 兩個條件 就可以直接這樣
String sql = "select * from table where 1 = 1";
if( 條件A != null ){
sql += " and A =" + 條件A;

}
if( 條件B != null ){
sql += " and B =" + 條件B;

}
這樣就可以避免多種情況存在的問題

閱讀全文

與java動態sql相關的資料

熱點內容
c523壓縮比 瀏覽:543
命令語氣的人什麼心態 瀏覽:435
程序員喜歡留指甲嗎 瀏覽:516
七牛雲伺服器收費標准 瀏覽:627
時光相冊加密空間密碼忘記 瀏覽:474
華為雲為用戶提供的服務雲伺服器 瀏覽:634
minecraftlinux伺服器搭建 瀏覽:376
linux命令新建文件 瀏覽:708
長線pdf 瀏覽:607
程序員電腦支持手寫 瀏覽:414
解壓頭戴式耳機推薦 瀏覽:344
紙條app上怎麼樣看對方主頁 瀏覽:883
編譯英語單詞怎麼寫 瀏覽:249
編譯原理和匯編原理的區別 瀏覽:864
如何給加密的pdf解密 瀏覽:770
華為盒子時間同步伺服器地址 瀏覽:95
python處理excel亂碼 瀏覽:391
mysql的命令行 瀏覽:822
jpeg採用什麼演算法 瀏覽:701
程序員紅軸薄膜 瀏覽:306