① sql語句加參數
你需要了解sql語句的拼接和一般字元串的拼接的異同.
例如:在sql腳本語句中,字元串用單引號'',這些在C#語句中拼接"sql語句"字元串時需要注意.
你可以在vs.net中寫一個用字元串拼接的sql語句,最後把它賦值給一個字元串對象.然後用斷點調試區查看生成的sql語句的結果,一般sql語句較長,驗證的方式都是把這段sql語句到sql sever的腳本文件(.sql)中去執行一下,就知道是否正確了.當然也有先在sql server 中調試好拼接字元串後再到程序代碼中去修改的.具體方式不定.
(以上是介紹的拼接sql語句方法,不過這種方式的安全性不高,常見的sql注入式攻擊就是利用的拼接sql語句的缺陷.)
你還可以考慮使用帶參數的存儲過程來實現,這個就需要了解存儲過程的一些知識了,具體的方法我就不介紹了,關於帶參數的存儲過程,網上有很多例子參考.
② SQL查詢中如何使用參數
這樣就只能通過動態拼成SQL了。
begin
declare @sql varchar(max)
set @sql ='SELECT PERSON, POSITION
FROM TABLE_'+變數+'
WHERE TIME>1514156400'
exec (@sql)
end
③ sql語句設置表明為參數
ps1.setString(1, name);
這種寫法字元串是會自動加單引號的;
除非改成
String sql ="select backboard,assists,anerror from "+name+" where id<100 order by id desc limit 6";
④ SQL參數如何設置
密碼應該是系統默認的哪個樣的,你試下看看輸入 sa 或admin 或 administrator這些等等的。。
⑤ SQL參數的使用
錯在,(@a=@b)表示兩個變數是否相等,你輸入的不等當然出來的結果為空。
⑥ sql developer 輸入參數為list怎麼設置
1. PL/SQL Developer記住登陸密碼
在使用PL/SQL Developer時,
為了工作方便希望PL/SQL Developer記住登錄Oracle的用戶名和密碼;
設置方法:
PL/SQL Developer->tools->Preferences->Oracle->Logon History,
在右邊界面的"Definition"中,"Store history"是默認勾選的,
再勾選上"Store with password",即可.
上述方法若不好用,使用下面的方式:
在上面所說的界面中的"Fixed Users"中,
添加需要直接選擇後就可登錄的用戶名/密碼@ORACLE_SID,
如:
cbsdb/cbsdb@cbsdb
重新登錄的時候,從Oracle Logon的登錄界面的Username後面的...按鈕處,
選擇需要登錄的用戶即可。
2. 執行單條SQL語句(SQL Window中根據游標位置自動選擇語句)
在使用PL/SQL Developer的SQL Window時,按F8鍵,PL/SQL Developer默認是執行該窗口的所
有SQL語句,需要設置為滑鼠所在的那條SQL語句,即執行當前SQL語句;
設置方法:PL/SQL Developer->tools->Preferences->SQL Window->Window types,
勾上"AutoSelect Statement" 即可。
注意,每條語句後面要加分號。
3. 格式化SQL語句
在使用PL/SQL Developer的SQL Window時,有時候輸入的SQL語句太長或太亂,
希望能用比較通用的寫法格式話一下,這樣看起來會好看些,也好分析;
使用方法:
選中需要格式化的SQL語句,然後點擊工具欄的PL/SQL beautifier按鈕即可.
4. 查看執行計劃
在使用PL/SQL Developer的SQL Window時,有時候輸入的SQL語句執行的效率,分析下表結構,
如何可以提高查詢的效率,可以通過查看Oracle提供的執行計劃;
使用方法:
選中需要分析的SQL語句,然後點擊工具欄的Explain plan按鈕(即執行計劃),
或者直接按F5即可。
5. 調試存儲過程
在使用PL/SQL Developer操作Oracle時,有時候調用某些存儲過程,或者調試存儲過程;
調用存儲過程的方法:
首先,在PL/SQL Developer左邊的Browser中選擇Proceres,
查找需要調用的存儲過程;然後,選中調試的存儲過程,點擊右鍵,
選擇Test,在彈出來的Test script窗口中,
對於定義為in類型的參數,需要給該參數的Value輸入值;
最後點擊上面的條數按鈕:Start debugger或者按F9;
最後點擊:RUN或者Ctrl+R。
(具體要調式一個存儲過程,請參照操作手冊,這個大概說明下應用)。
6. oralce精簡客戶端的使用
要想PL/SQL連接oracle資料庫,除了PL/SQL Developer 之外還需要Oracle客戶端,
有一個更方便的方法就是使用Oracle精簡客戶端,很多地方可以下載,文件很小,耗資源也少。
安裝完成後修改安裝目錄下的\Oracle\ora90\network\ADMIN\tnsnames.ora文件:
格式如下:
DATABASE_NAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
#(SERVICE_NAME = dealer)
(SID = SID_NAME)
#(SERVER = DEDICATED)
)
)
7. 關鍵字自動大寫:
了解一點編程的常識的人都知道,編碼風格很重要。
在閱讀代碼方面,保持一致的編碼風格,閱讀起來比較容易;
在執行效率方面,保持一致的編碼風格,更有可能被放到共享SQL區中,
這樣就提供了執行的效率。
另外,信息系統的核心是資料庫,系統出問題時最先要查的就是SQL語句,
怎樣在浩瀚的日誌中快速找到那條SQL語句是件比較痛苦的事情。
SQL語句全部大寫並不能徹底解決這一問題,
但在一堆代碼中間找一行全部大寫的字元相對容易些,你的眼睛會感謝你。
設置也很簡單:
Tools->Preferences->Editor,將Keyword case選擇Uppercase。
我一般是讓關鍵字大寫,其他比如表名,欄位名等都是小寫。
大家都應該養成一種自己的編碼習慣,並保持下去。
8. 右鍵菜單
在PL/SQL Developer(下面簡稱PLD)中的每一個文本編輯窗口,
如SQL Window,Command Window和Porgram Window,
右鍵點擊某個對象名稱,會彈出一個包含操作對象命令的菜單,我們這里稱之為右鍵菜單。
對象類型可以是表,視圖,同義詞,存儲過程和函數等。
根據對象類型的不同,彈出的菜單也有區別。
表和視圖有View, Edit, Rename, Drop, Query data 和Edit data等功能。
View和Edit分別是查看和修改表的結構信息,如欄位,主鍵,索引和約束等。
Query data相當於新打開一個窗口,並執行select * from 表。
Edit data相當於新打開一個窗口,並執行select * from 表 for update。
存儲過程和函數有Test功能,選中後可以進入調試狀態。
有時由於PLD識別錯誤,右鍵點擊對象並不能出來正確的菜單,
可以在對象所在的DDL或DML語句的前面,加上分號,這樣PLD就能正確的判斷出對象的類型
9. Select for Update
有時我們需要把一些數據導入資料庫中,如果用UE拼Insert語句,會比較麻煩,而且操作性不強。
PLD的SQL Window可以查詢,新增,修改和刪除表的內容。
查詢自不必說,而新增,刪除和修改,只需在select語句後加入for update,
對表進行行級鎖定,然後點擊窗口的鎖型圖標,即可進入編輯狀態。
下面介紹一下如何從Excel中提取文本插入到資料庫中,
我們的Excel文件中有三列,在資料庫中建立臨時表:
CREATE TABLE t1(
cino varchar2(100),
contno varchar2(100),
loanno varchar2(100)
)
然後在SQL Window中輸入select t1 for update,並點擊鎖型滑鼠,進入編輯狀態,
用滑鼠點擊第一行的輸入窗口,這時PLD會死鎖幾秒鍾,
然後可以見到游標在第一行的輸入框中閃動,
用滑鼠把CINO, CONTNO, LOANNO選中,進入Excel中,把需要插入資料庫的內容選中,
然後切換到PLD,按Ctrl + V,點擊√,然後再點擊Commit按鈕,
則數據提交到表t1中,執行select * from t1可以看到內容.
10. PL/SQL Beautifier(PL/SQL 美化器)
PLD 6以上版本有對DML代碼格式化的功能。
在SQL Window或Program Window中選中部分代碼(如果不選則對整個窗口的代碼操作),
在菜單中選Edit -> PL/SQL Beautifier,得到格式化的代碼。
對於非法的DML語句或DDL語句,PLD將會在下方狀態欄提示:
PL/SQL Beautifier could not parse text。
在預設的狀態下,PLD會把DML語句的每一個欄位都排在單獨的一行,這樣不方便查看。
在菜單中選Edit à PL/SQL Beautifier Options,進入Preferences窗口,
選擇Edit,進入配置文件編輯界面,在標簽欄選DML,
在窗口中部的Select, Insert和Update組框中把Fit選中,然後點擊Save,
把配置文件保存到PLD的安裝目錄下,點擊Close關閉。
在Rules file中輸入配置文件所在位置,點擊OK,完成配置文件切換。
這時再對代碼進行格式化,就可以使每一個欄位盡可能的在一行上了。
11. TNS Names
菜單Help->Support Info->TNS Names,可以查看Oracle的tnsnames.ora。
12. Copy to Excel
在SQL Window中執行Select語句,在結果出來以後,右鍵點擊下面的數據區,
選擇Copy to Excel,可以把數據區的記錄原樣拷貝到Excel中。
但有兩點需要注意:
(1) field中不能以=開始,否則Excel會誤認為是函數;
(2) 數字不要超過17位,否則後面的位數將會置為0,
但可以通過在數字前加'來使Excel認為該field是文本,
同時對於資料庫中Numbe類型的欄位,最好用to_char輸出,不然可能會顯示不正常;
13. 保持上次打開的SQL腳本
重新進入PL/SQL Developer時,Window List能打開上次退出時的文檔:
(1) 將菜單Tools->Window list選項勾上;
(2) Tools->Perferences->User Interface->Options的右邊,
將"Autosave desktop"勾選.
(3) 退出PL/SQL Developer重新進入.
14. 快速找到已知表名的表或其他對象:
在Tools菜單中,勾選上Object Browser,將對象瀏覽器打開,
雙擊對象瀏覽器中的某個對象所處的文件夾,
比如表都是在Tables文件夾中,
然後以盡快的速度輸入表名,即可找到以你輸入的幾個字母開頭的對象了.
15. 快速關閉打開於Windows List中的文檔窗口:
按住Shift鍵,左鍵點擊需要關閉的文檔窗口.
16. PL/SQL DEVELOPER中的專用復制(Special Copy)
如果你正在用 PL/SQL Developer 寫 SQL 和 PL/SQL 代碼,
隨後你又要在其它工具里使用代碼,例如象 3GL 這樣的程序設計語言,
那麼你可能需要把這些代碼轉換為稍微不同的格式。
讓我們假設你已經在 PL/SQL Developer 里寫了並測試了這樣一個SQL 語句:
select deptno, sum(sal) mgr_sal
from emp
where job = 'MANAGER'
group by deptno
order by mgr_sal desc
例如,如果你要在Borland Delphi 里使用這個語句,你可能需要象這樣的格式:
SQL := 'select deptno, sum(sal) mgr_sal from emp' + #13#10 +
'where job = ''MANAGER''' + #13#10 +
'group by deptno' + #13#10 +
'order by mgr_sal desc';
為了這個目的,在PL/SQL DEVELOPER中選中已寫好的SQL語句,滑鼠右鍵,
在彈出的菜單中找到 Special Copy。這個功能有一個子菜單,它顯示了所有被定義的專用復制格式。
在選擇了格式之後,被轉換的代碼就被儲存在剪貼板上了,
這樣你就可以粘貼它到相應工具的編輯器里了。
專用復制格式被定義在 PL/SQL Developer 安裝目錄下的 SpecialCopy 子目錄里。
你可以改變預先確定的復制格式或者添加新的復制格式。
僅僅簡單地添加一個帶有 . 擴展名的文本文件就可以了,
它包含了一個針對 PL/SQL 代碼第一行的變數
(<line_1>)、一個針對 PL/SQL 代碼最後一行的變數(<line_N>)
和一個針對所有其它行的變數(<line_*>)。下面是一個針對 Borland Delphi 的例子:
;PL/SQL Developer SpecialCopy definition for Borland Delphi
;<line_1> for first line
;<line_*> for all other lines
;<line_N> for last line
;
SQL := '<line_1>' + #13#10 +
'<line_*>' + #13#10 +
'<line_n>';
第一行需要為指派到 SQL 的變數加上前言,接下來需要有一個 CR/LF 對。
最後一行不需要有CR/LF 對,但需要用分號來終止。所有其它行僅僅需要 CR/LF 接在後面。
如果 <line_1> 和 <line_n> 都與 <line_*> 一樣,你可以忽略它們。
在一些語言里,你需要對特定的字元使用換碼序列。
例如,在 C++ 里,你要對 tab字元(ASCII 碼為 9)使用 \t 。
要定義這些換碼序列,請使用 #define 關鍵詞:
#define char(9) = \t
#define \ = \\
String("<line_1>\n") +
String("<line_*>\n") +
String("<line_n>");
你還可以使用 "#define compress"來指出你要從結果里移除所有多餘的空字元(空格、製表符和換行)。
注意,. 文件的名字將被包括在菜單里,所以你應該使用描述性的文件名。
17. 在PL/SQL DEVELOPER中復制行記錄的簡便方法
(1) 單擊要拷貝的行記錄左邊的黑色小三角,該行被選中,右鍵復制。
(2) 粘貼至記事本里,然後復制剛才粘貼的內容。(該步驟不知何故不能缺)
(3) 單擊新記錄左邊的黑色小三角,右鍵粘貼即可。
18. 快捷鍵定義的位置:
Tools->Preferences->User Interface->Key configuration
選中需要定義的Item,然後按一個快捷鍵組合即可,
如果所按的快捷鍵已有定義,會有提示,這時候Cancel,另外選擇快捷鍵組合即可;
通常情況下,打開PLSQL Developer後,最經常乾的事就是打開SQL Window和Command Window,
就給這兩個操作定義了快捷鍵, ALT+S 和 ALT + C,這樣拿滑鼠點三下的事情只需要按一下鍵。
設置方法:
菜單Tools -> Preferences -> Key Configuration
注意:
如果設置了快捷鍵不起作用,
回到Tools -> Preferences -> Key Configuration界面,
點擊最上方的"Default Administrator"右邊的"..."按鈕,
在彈出的"Preference Set"界面中,對"Personal Preferences"
以及下面的"Definition"->"Description"進行一下設置.
19. 在窗口標題欄內顯示文件的完全路徑
Tools->Preferences->User Interface->Options
勾選"Show complete file path in windows titles"
20. Object Brower中自定義Object的順序以及登錄後默認自動選中My Objects
默認情況下,PL/SQL Developer登錄後,Brower里會選擇All objects,
如果你登錄的用戶是dba,要展開tables目錄,正常情況都需要Wait幾秒鍾,
而選擇My Objects後響應速率則是以毫秒計算的。
設置方法:
Tools菜單 -> Object Brower Filters,會打開Define Browser Filters界面,
選中"My Objects",並勾選 "Default" 設為默認即可。
Tools菜單 -> Object Brower Folders,會打開Define Browser Folders界面,
這里可以把經常用到的幾個目錄(比如:Tables Views Seq Functions Proceres)
移得靠上一點,並加上顏色區分,這樣你的平均尋表時間會大大縮短,試試看。
21. 雙擊即顯示表數據
滑鼠雙擊表或者視圖時的默認響應實在讓我感到失望,因為我最關心的是表結構和數據,
但是雙擊後這兩件事情都沒有發生,也許默認響應是高手們需要的,
但對我來說查看數據和表結構是最主要的,其他的我不關心。
不過好的是這是可以設置的,你可以給滑鼠雙擊和拖放綁定需要的事件,
比如:雙擊編輯數據,拖放顯示表結構,Yeah!
設置方法:
菜單Tools -> Preferences -> Object Browser,
在右側,為不同的Object Type綁定雙擊和拖放操作。
22. 去掉注釋的斜體樣式:
菜單Tools -> Preferences -> User Interface->Editor
在右邊的界面中"Syntax Highlighting"下,去掉"Comment"右邊的"Italic"的勾選.
⑦ sql 資料庫查詢怎樣設置參數
直接在程序里寫成變數就可以了,變數要有賦值,否則會出錯
例如VB里這樣寫
SQL = "select * from proct where ID='" & Trim(Text1.Text) & "'"
rst4.Open SQL, con1, 1, 1
條件表示ID=Text1的Text的值
⑧ sql 存儲過程 怎麼傳入參數
執行帶參數的存儲過程的方法如下:
Exec sp_configure 'allow updates',1 --允許更新系統表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是兩個例子。
SQL Server中執行帶參數的存儲過程的方法是:
EXEC 存儲過程名字 '參數1','參數2',數值參數
EXEC 是一個關鍵字。
字元串參數使用單引號括起來,數值參數不需要使用單引號
⑨ exlce里sql程序里多個參數怎麼設置
exlce里sql程序里多個參數怎麼設置
Excel程序自帶的外部數據連接功能,可以連接SQL伺服器。具體步驟為:
1、選擇【數據】選項卡,在【獲取外部數據】分組,找到【自其他來源】。
2、單擊【自其他來源】按鈕,打開【選擇來源】下拉菜單。
3、選擇【來自SQL Server】打開【數據連接向導】對話框。
4、填寫伺服器名稱、登錄的用戶名及密碼等信息,即可成功連接。
⑩ 如何在sql中使用系統默認的參數
sql語句有的欄位需要預定義,而這些欄位類型有多種,如:
sql="select * from t_corp t where t.corpid=? and t.corpname=? " ,
欄位統一的進行管理,客戶不需考慮設置的欄位是什麼類型,只需要添加欄位的值就可以。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/***
* 注意從資料庫取日期,比如:資料庫欄位中有stamp=2010-02-08 09:31:53
* rs.getTime("stamp")只能得到09:31:53,rs.getDate("stamp")只能得到2010-02-08
* rs.getTimestamp("stamp"),得到2010-02-08 09:31:53.0,
* 只能通過函數rs.getTimestamp("stamp").toString().substring(0, rs.getTimestamp("stamp").toString().length()-2)
* 得到2010-02-08 09:31:53
* @author Administrator
*
*/
public class DBParamTest {
public static void main(String[] args) {
StringBuilder sql=new StringBuilder();
sql.append( "select * from t_corp t where t.corpid=? and t.corpname=? ")
.append("and t.stamp between to_date(?,'yyyy-mm-dd HH24:mi:ss') and to_date(?,'yyyy-mm-dd HH24:mi:ss')");
Connection con = null;
try {
con = DBTest.getCon();//連接資料庫
} catch (SQLException e) {
e.printStackTrace();
return;
}
//為sql語句設置參數
DBParams params = new DBParams();
params.addParam(1314);
params.addParam("惠山分局錢橋派出所");
params.addParam("2010-01-01 00:00:00");
params.addParam("2010-04-03 03:00:00");
PreparedStatement pst = null;
ResultSet rs = null;
try {
pst = con.prepareStatement(sql.toString());
params.prepareStatement(pst);
rs = pst.executeQuery();
if(rs.next()){
System.out.println("remark:" + rs.getString("corpname"));
System.out.println("stamp:"+rs.getTimestamp("stamp").toString().substring(0, rs.getTimestamp("stamp").toString().length()-2));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.closeRs(rs);
DBUtil.closePst(pst);
DBUtil.closeCon(con);
}
}
}