動態sql之我見 欄位名動態生成

2021-06-20 05:56:06 字數 2846 閱讀 8083

態sql這個話題,應該說不是什麼新鮮事情了!但是,在一些特殊場合,我們就會要用到動態sql,如果是第一次去用動態sql的話,估計不會那輕鬆。這裡阿堂把自己在專案中用動態sql的過程,和朋友們分享一下!

我這裡所說的動態sql,是指的select語句中後面跟的字段是不確定的,是要根據實際業務來拼成的select語句。並不是簡單指select後面的where條件是動態變化的

我的實際業務情況如下

(這是乙個原來的專案,就是用的jdbc來操作的。。如果是這種動態的sql,用hibernate,ibatis這些框架處理起來就絕非易事了)

處理記錄resultset集的類

public class mytablemodel extends abstracttablemodel

catch(exception e) }

//重寫getcolumncount方法,用於設定該tablemodel的列數

public intgetcolumncount()

catch (sqlexception e)

}//重寫getrowcount方法,用於設定該tablemodel的行數

public intgetrowcount()

catch(exception e)

}//重寫getvalueat方法,用於設定該tablemodel指定單元格的值

publicobject getvalueat(int row, int column)

catch(sqlexception e)

}//重寫getcolumnname方法,用於為該tablemodel設定列名

publicstring getcolumnname(int c)

catch(sqlexception e)} }

業務類中的乙個處理方法

public resultset selectbill3(date sdate,dateedate,string content,string username,string type) throwssqlexception

//運輸日期 add by heyitang200903041335

if(type.equals("allocatenodate"))

//運輸日期和派車單的組合條件 add by heyitang200903041335

if(type.equals("transanddate"))

//帳單日期和派車單的組合條件

if(type.equals("allocatenoanddate"))

connection conn=null;

getconnection gc=newgetconnection();

conn=gc.getconnection();

preparedstatementpst=null;

resultset rs=null;

resultset rs1=null;

tryif(type.equals("allocatenoanddate")|| type.equals("transanddate"))

rs1=pst.executequery(); 

intcount=0; 

//獲得並集最多的費用型別

while(rs1.next())

rs1.close();

stringstrarr=str.tostring().split(";"); 

intlength=strarr.length;

strings="",s1="",s3="",fylx1="",fyzwmc1="";

//下面迴圈得到拼接的動態sql語句

for(inti=0;i

//動態拼sql語句

SQL查詢表,表的所有欄位名

sql server 檢視所有表名 select name from sysobjects where type u 查詢表的所有欄位名 select name from syscolumns where id object id 表名 select from information schema....

用SQL命令修改欄位名稱

sp rename是乙個功能豐富的儲存過程,能夠對 表 檢視 列 儲存過程 觸發器 預設值 資料庫 物件或規則進行重新命名,並且保證不丟失資料。sp renamedb 更改資料庫的名稱。下例將資料庫 accounting 改名為 financial。sql server 2005 新增字段 alte...

SQL 更新表名,欄位名語句

修改表名 exec sp rename 原表名 新錶名 修改欄位名 exec sp rename 表名 欄位名 新欄位名 新增字段 alter table 表名 add 列名 字段型別 如果欄位不為空,需要先新增乙個預設值 alter table 表名 add 列名 字段型別 not null de...