⑴ mybatis是如何將sql執行結果封裝為目標對象並返回的都有哪些映射形式
${}是Properties文件中的變數佔位符,它可以用於標簽屬性值和sql內部,屬於靜態文本替換,比如${driver}會被靜態替換為com.MySQL.jdbc.Driver。#{}是sql的參數佔位符,Mybatis會將sql中的#{}替換為?號,在sql執行前會使用PreparedStatement的參數設置方法,按序給sql的?號佔位符設置參數值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式為使用反射從參數對象中獲取item對象的name屬性值,相當於param.getItem().getName()。
⑵ 怎麼樣才能將EXCEL中的數據用宏導入到SQL庫中
你用的什麼資料庫?廳州
我以Mysql為例說下:早伏念
1.用Excel將選中的數據快兒拷貝到一個TXT文本文件中(記得把後面的空格消掉。。),假如存到「D:\data.txt」這個位置里。
2.根據要導入的數陸困據快兒建立MySql資料庫和表,然後進入命令提示符里使用命令
load data local infile 'D:\data.txt' into table exceltomysql fields terminated by '\t';
進行導入操作(table是你建立的表名字) 如果提示找不到D:\data.txt 你就改成D:\\data.txt
⑶ 如何把sql語句寫進vb程序裡面啊
VB實現SQL Server 2000存儲過程調用
存儲過程是存儲在伺服器上的一組預編譯的Transact-SQL語句,是一種封裝重復任務操作的方法,支持用戶提供的變數,具有強大的編程功能。它類似於DOS系統中的BAT文件。在BAT文件中,可以包含一組經常執行的命令,這組命令通過BAT文件的執行而被執行。同樣的道理,可以把要完成某項任務的許多Transact-SQL語句寫在一起,組織成存儲過程的形式,通過執行該存儲過程就可以完成這項任務。存儲過程與BAT文件又有差別,即存儲過程已經進行了預編譯。
1、創建存儲過程的方法
在Transact-SQL語言中,創建存儲過程可以使用CREATE PROCEDURE語句,其語法形式如下:
CREATE PROC[EDURE] procere_name[;number]
[{@parameter data_type}[VARYING][=default][OUTPUT]
]],…n]
[WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS sql_statement[…n]
在上面的CREATE PROCEDURE語句中,方括弧"[ ]"中的內容是可選的,花括弧"{}"中的內容是必須出現的,不能省略,[,…n]表示前面的參數樣式,可以重復出現。豎線"|"表示兩邊的選項可以任選一個。
下面分析該語句中各種選項的含義。
CREATE PROCEDURE是關鍵字,也可以寫成CREATE PROC。
procere_name是該存儲過程的名稱,名稱可以是任何符合命名規則的標示符。名稱後的[;number]參數表示可以定義一系列的存儲過程名稱,這些存儲過程的數量由number指定。
參數名稱可以使用@parameter data_type來指定。在Transact-SQL語言中,用戶定義的參數名稱前面加"@"符號,這些數據類型是Transact-SQL語言允許的各種數據類型,包括系統提供的數據類型和用戶定義的數據類型。
當參數類型為cursor時,必須使用關鍵字VARYING和OUTPUT。VARYING表示結果集可以是一個輸出參數,其內容是動態的。該關鍵字只能在使用游標作為數據類型時使用。關鍵字OUTPUT表示這是一個輸出參數,可以把存儲過程執行的結果信息返回應用程序。
default用於指定參數的默認值。
RECOMPILE選項表示重新編譯該存儲過程。該選項只是在需要的時候才使用,例如經常需要改變資料庫模式時。
ENCRYPTION選項用來加密創建存儲過程的文本,防止他人查看。
選項FOR REPLICATION主要用於復制過程中。注意,該選項不能和選項RECOMPILE同時使用。
AS是一個關鍵字,表示其後的內容是存儲過程的語句。參數sql-statement[…n]表示在一個存儲過程中可以包含多個Transact-SQL語句。
2、存儲過程的優點
在頻繁訪問資料庫的系統中,開發者都樂於使用存儲過程,這與存儲過程的下列優點是分不開的。
⑴ 存儲過程可以與其他應用程序共享應用程序的邏輯,從而確保一致的數據訪問和操縱。
⑵ 存儲過程提供了一種安全機制。如果用戶被授予執行存儲過程許可權,那麼即使該用戶沒有訪問在執行該存儲過程中所參考的表或視圖的許可權,該用戶也可以完全執行該存儲過程而不受到影響。因此,可以創建存儲過程來完成所有的增加、刪除等操作,並且可以通過編程式控制制上述操作中對信息的訪問許可權。
⑶ 存儲過程執行速度快,便於提高系統的性能。由於存儲過程在第一次執行之後,其執行規劃就駐存在過程高速緩沖存儲區中,在以後的操作中,只需從過程高速緩沖存儲區中調用編譯好的二進制形式存儲過程來執行。
⑷ 使用存儲過程可以減少網路傳輸時間。如果有一千條Transact-SQL語句的命令,一條一條地通過網路在客戶機和伺服器之間傳送,那麼這種傳輸所耗費的時間將很長。但是,如果把這一千條Transact-SQL語句的命令寫成一條較為復雜的存儲過程命令,這時在客戶機和伺服器之間網路傳輸所需的時間就會大大減少。
SQL Server 2000資料庫存儲過程的調用
VB作為當今應用極為普遍的資料庫客戶端開發工具之一,對客戶端應用程序調用伺服器端存儲過程提供了強大的支持。特別是隨著VB6.0的推出,VB客戶端應用程序可以方便地利用ADO的對象和集合來實現對資料庫存儲過程的調用。
在筆者編寫的科技檔案管理系統中,就是採用VB作為開發平台,採用SQL Server2000資料庫管理數據,在這個科技檔案管理系統中有海量的數據,並且對資料庫有頻繁的訪問,利用存儲過程訪問資料庫節省了執行時間,大大提高了系統的性能。
1、ADO簡介
ADO控制項(也稱為ADO Data控制項)與VB固有的Data控制項相似。使用ADO Data控制項,可以利用Microsoft ActiveX Data Objects(ADO)快速建立資料庫綁定控制項和數據提供者之間的連接。
ADO Data控制項可以實現以下功能:
·連接一個本地資料庫或遠程資料庫。
·打開一個指定的資料庫表,或定義一個基於結構化查詢語言(SQL)的查詢、存儲過程或該資料庫中的表的視圖的記錄集合。
·將數據欄位的數值傳遞給數據綁定控制項,可以在這些控制項中顯示或更改這些數值。
·添加新的記錄,或根據更改顯示在綁定的控制項中的數據來更新一個資料庫。
2、資料庫的連接
資料庫的連接可通過ADO控制項實現,為此,必須在工程部件中選擇Microsoft ADO Data Control 6.0 (OLEDB),然後在窗體中添加ADO控制項。利用ADO連接資料庫有兩種方法,具體如下。
1) 通過ADODC屬性頁實現連接
在ADODC屬性頁中選擇生成按鈕,進入數據鏈接屬性對話框;然後選擇該對話框中的連接屬性頁,選擇或輸入伺服器名稱和資料庫等重要信息;最後測試連接,連接成功後,按確定按鈕,返回到屬性頁對話框,可獲得連接字元串,如下例:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Science_File;Data Source=Data_Server
其中sa是用戶名;Science_File是資料庫名;Data_Server是資料庫名。
通過下列語句,即可連接到指定的資料庫:
dim odbcstr as String, adocon As New ADODB.Connection
odbcstr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Science_File;Data Source=Data_Server"
adocon.Open odbcstr '連接到資料庫
2) 直接使用連接語句實現
連接資料庫的語句如下:
Dim ado as ADODC
ado.ConnectionString = "Provider=SQLOLEDB.1;Password=" & User_Pwd & ";Persist Security Info=True;User ID=" & User_Name & ";Initial Catalog=" & Data_Name & ";Data Source=" & server_name
其中User-Pwd是用戶密碼;User_Name是用戶名;Data_Name是資料庫名;server_name是伺服器名。
連接資料庫成功後就可以調用存儲過程執行操作。
3、存儲過程的調用
假設有一個名為doc_ProcName存儲過程,該存儲過程有一個輸入參數,一個輸出參數。
1) 直接傳遞參數調用存儲過程
直接傳遞參數方法主要通過以下幾個步驟來實現:
(1) 通過ADODB的Connection對象打開與數據源的連接;
(2) 通過ActiveConnection指定Command對象當前所屬的Connection對象;
(3) 通過CommandText屬性設置Command對象的源,即要調用的存儲過程;
(4) 通過CommandType屬性確定Command對象的源類型,如果源類型為存儲過程CommandType即為adCmdStoredProc;
(5) 通過Command對象的Parameters集合向所調用的存儲過程傳遞參數,其中對象Parameters(0)為執行存儲過程的返回值,返回值為0則執行存儲過程成功;
(6) 通過Eexecute方法執行在 CommandText 屬性中指定的存儲過程。
以存儲過程doc_ProcName為例,關鍵代碼如下:
Dim strS As String '定義一變數
Dim adoconn As New ADODB.Connection 'Connection 對象代表了打開與數據源的連接。
Dim adocomm As New ADODB.Command 'Command 對象定義了將對數據源執行的指定命令。
Dim ReturnValue As Integer '調用存儲過程的返回值
adoconn.ConnectionString = Adodc1.ConnectionString 'Adodc1為窗體中的ADO控制項,並已成功連接資料庫
adoconn.Open
Set adocomm.ActiveConnection = adoconn '指示指定的 Command對象當前所屬的 Connection對象。
adocomm.CommandText = "doc_ProcName" '設置Command對象源。
adocomm.CommandType = adCmdStoredProc '通知提供者CommandText屬性有什麼,它可能包括Command對象的源類型。設置這個屬性優化了該命令的執行。
adocomm.Parameters(1) = "1"
adocomm.Parameters(2) = "OutputParameters" 'OutputParameters可以為任意的字元串或數字
adocomm.Execute
ReturnValue = adocomm.Parameters(0) '存儲過程的返回值,返回0則成功執行。
strS = adocomm.Parameters(2) '把存儲過程的輸出參數的值賦給變數strS
2) 追加參數法調用存儲過程
追加參數通過CreateParameter方法,用來指定屬性創建新的Parameter對象。具體語法如下:
Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
·Name 可選,字元串,代表 Parameter 對象名稱。
·Type 可選,長整型值,指定 Parameter 對象數據類型。
·Direction 可選,長整型值,指定 Parameter 對象類型。
·Size 可選,長整型值,指定參數值最大長度(以字元或位元組數為單位)。
·Value 可選,變體型,指定 Parameter 對象值。
這種方法與上面一種方法的分別主要在於,追加參數的方法在向存儲過程傳遞參數時,這種方法首先通過CreateParameter方法為存儲過程創建參數,然後通過Append方法將創建的參數追加到Parameters集合中去。
仍然以存儲過程doc_ProcName的調用為例,關鍵代碼如下:
Dim mRst As ADODB.Recordset 'Recordset 對象表示的是來自基本表或命令執行結果的記錄全集。
Dim prm As ADODB.Parameter 'Parameter 對象代表參數或與基於參數化查詢或存儲過程的Command 對象相關聯的參數。
adoconn.ConnectionString = Adodc1.ConnectionString
adoconn.Open
Set adocomm.ActiveConnection = adoconn
adocomm.CommandText = "doc_ProcName"
adocomm.CommandType = adCmdStoredProc
Set prm = adocomm.CreateParameter("parameter1", adTinyInt, adParamInput, , "1")
adocomm.Parameters.Append prm
Set prm = adocomm.CreateParameter("parameter2", adInteger, adParamOutput)
adocomm.Parameters.Append prm
Set mRst = adocomm.Execute
ReturnValue = adocomm.Parameters(0)
以上代碼中未定義的變數以及未注釋的語句與前述相同。
⑷ 在Excel里用宏實現自動生成sql語句的問題
分類: 電腦/網路猜悔 >> 程序設計 >>毀核 其他編程語言
問題描述:
請看我的Bolg里有圖片描述,一目瞭然.blog.sina/u/***********即點擊按鈕生成5條insert語句,用分號閣開.
知道思路的說下思路,知纖兆掘道細節的最好說詳細點啦,先謝謝!
解析:
Const MAX_NUM_ROW = 5000
Const PATH_OUTPUT_ROW = 1
Const PATH_OUTPUT_COL = 2
Const FILE_OUTPUT_ROW = 2
Const FILE_OUTPUT_COL = 2
'Template Info
Const ENTRP_CDE_COL = 1
Const RPT_TMPLT_ID_COL = 2
Const RPT_FMT_TYP_COL = 3
Const FNCTN_ID_COL = 4
Const TMPLT_PATH_COL = 5
Const BNDL_PATH_COL = 6
Const RPT_NAM_GEN_CLASS_COL = 7
Const RPT_DATASOURCE_CLASS_COL = 8
Const ACK_RPT_TMPLT_ID_COL = 9
Const REC_VER_NUM_COL = 10
Const INIT_TIME_COL = 11
Const LAST_UPD_TIME_COL = 12
Const LAST_UPD_BY_COL = 13
Const START_ROW = 5
Private Type Tmplt
ENTRP_CDE As String
RPT_TMPLT_ID As String
RPT_FMT_TYP As String
FNCTN_ID As String
TMPLT_PATH As String
BNDL_PATH As String
RPT_NAM_GEN_CLASS As String
RPT_DATASOURCE_CLASS As String
ACK_RPT_TMPLT_ID As String
REC_VER_NUM As String
INIT_TIME As String
LAST_UPD_TIME As String
LAST_UPD_BY As String
End Type
Dim noOfTmplts As Integer
Dim TmpltArray(MAX_NUM_ROW) As Tmplt
Private Sub CommandButton1_Click()
generateSQL
End Sub
Private Sub generateSQL()
makedir
initData
writeToFile
End Sub
Private Sub makedir()
On Error Resume Next
'Make Directory
MkDir Sheet18.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL)
End Sub
Private Sub initData()
Erase TmpltArray
'Erase TmpltRoleArray
'noOfUserRoles = 0
noOfTmplts = 0
Dim j As Integer
'Lookup all fields
For j = START_ROW To MAX_NUM_ROW
If Sheet18.Cells(j, RPT_TMPLT_ID_COL) = "" Then
Exit For
End If
'Set Template
TmpltArray(noOfTmplts).ENTRP_CDE = Sheet18.Cells(j, ENTRP_CDE_COL)
TmpltArray(noOfTmplts).RPT_TMPLT_ID = Sheet18.Cells(j, RPT_TMPLT_ID_COL)
TmpltArray(noOfTmplts).RPT_FMT_TYP = Sheet18.Cells(j, RPT_FMT_TYP_COL)
TmpltArray(noOfTmplts).FNCTN_ID = Sheet18.Cells(j, FNCTN_ID_COL)
TmpltArray(noOfTmplts).TMPLT_PATH = Sheet18.Cells(j, TMPLT_PATH_COL)
TmpltArray(noOfTmplts).BNDL_PATH = Sheet18.Cells(j, BNDL_PATH_COL)
TmpltArray(noOfTmplts).RPT_NAM_GEN_CLASS = Sheet18.Cells(j, RPT_NAM_GEN_CLASS_COL)
TmpltArray(noOfTmplts).RPT_DATASOURCE_CLASS = Sheet18.Cells(j, RPT_DATASOURCE_CLASS_COL)
TmpltArray(noOfTmplts).ACK_RPT_TMPLT_ID = Sheet18.Cells(j, ACK_RPT_TMPLT_ID_COL)
TmpltArray(noOfTmplts).REC_VER_NUM = Sheet18.Cells(j, REC_VER_NUM_COL)
TmpltArray(noOfTmplts).INIT_TIME = Sheet18.Cells(j, INIT_TIME_COL)
TmpltArray(noOfTmplts).LAST_UPD_TIME = Sheet18.Cells(j, LAST_UPD_TIME_COL)
TmpltArray(noOfTmplts).LAST_UPD_BY = Sheet18.Cells(j, LAST_UPD_BY_COL)
noOfTmplts = noOfTmplts + 1
Next
End Sub
Private Sub writeToFile()
Dim lvOutputPath As String
lvOutputPath = Sheet18.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL) & "\" & Sheet18.Cells(FILE_OUTPUT_ROW, FILE_OUTPUT_COL)
If lvOutputPath = "" Then
MsgBox "File Output Path Missing!"
Exit Sub
End If
fileNum = FreeFile
' Open Output Path
Open lvOutputPath For Output As fileNum
Dim lvUserSql As String
For j = 0 To noOfTmplts - 1
lvUserSql = "INSERT INTO RS_RPT_TMPLT(ENTRP_CDE,RPT_TMPLT_ID,RPT_FMT_TYP,FNCTN_ID,TMPLT_PATH,BNDL_PATH,RPT_NAM_GEN_CLASS,RPT_DATASOURCE_CLASS,ACK_RPT_TMPLT_ID,REC_VER_NUM,INIT_TIME,LAST_UPD_TIME,LAST_UPD_BY) " & _
"values('TF','" & TmpltArray(j).RPT_TMPLT_ID & "','" & TmpltArray(j).RPT_FMT_TYP & "','" & TmpltArray(j).FNCTN_ID & "','" & TmpltArray(j).TMPLT_PATH & "','" & TmpltArray(j).BNDL_PATH & "','" & _
TmpltArray(j).RPT_NAM_GEN_CLASS & "','" & TmpltArray(j).RPT_DATASOURCE_CLASS & "','" & TmpltArray(j).ACK_RPT_TMPLT_ID & "'," & TmpltArray(j).REC_VER_NUM & "," & TmpltArray(j).INIT_TIME & "," & TmpltArray(j).LAST_UPD_TIME & ",'" & TmpltArray(j).LAST_UPD_BY & "');"
Print #fileNum, lvUserSql
Next
Close fileNum
MsgBox "Finished"
Exit Sub
Err_Open_File:
Close lvFileNum
If Err.Number = 76 Then
'Path Not Found
MsgBox Err.Description
Exit Sub
Else
MsgBox Err.Description
Exit Sub
End If
End Sub
⑸ 怎麼把sql查詢到的數據用java封裝成對象放到list里
1.新建一個實體類,定義成員變數的分別用於封裝你的數據。2.新建一個List集合用於存儲實體類對象3.new一個對象,用JDBC讀取sql語句,分別給實體類對象的成員變數賦值,再將對象add到集合中,完畢。
⑹ 如何將 sql 裡面的數據 每天自動導入 access 宏或者自動都可以 每次打開 access 可以自動刷新 dpdm的數據
那肯定要寫個導入的程序,定時執行導入方法就可以了。
⑺ Access使用宏的幾點說明
在宏「條件」列不能使用 SQL 表達式。
通常情況下直接執行宏只是進行測試。可以在確保宏的設計無誤之後,將宏附加到窗體、報表或控制項中,以對事件做出響應,也可以創建一個執行宏的自定義菜單命令。
如果要 Microsoft Access 暫時忽略某個操作,請輸入 False 為條件。暫時忽略操作有助於找出宏中的問題。
如果要快速創建一個在指定資料庫對象上執行操作塌腔的宏,請從「資料庫」窗口中將對象拖拽到「宏」窗口的操作行。例如,將窗體拖拽櫻衫神到操作行,就可以創建一個打開窗體的宏。其步驟如下:單擊「窗口」菜單上的「垂直平鋪」命令來放置「宏」窗口和「資料庫」窗口,以使得兩者都能顯示在屏幕上;然後在「資料庫」脊虧窗口中單擊要拖拽的對象類型的選項卡,單擊相應的對象,並將其拖拽到某個操作行內。如果拖拽的是某個宏,將添加執行此宏的操作,而拖拽其他對象(表、查詢、窗體、報表或模塊)將添加打開相應對象的操作。