Latest topics
Tìm kiếm
Statistics
Diễn Đàn hiện có 35 thành viênChúng ta cùng chào mừng thành viên mới đăng ký: dokimphuong
Tổng số bài viết đã gửi vào diễn đàn là 339 in 229 subjects
Thống Kê
Hiện có 13 người đang truy cập Diễn Đàn, gồm: 0 Thành viên, 0 Thành viên ẩn danh và 13 Khách viếng thăm Không
Số người truy cập cùng lúc nhiều nhất là 180 người, vào ngày 23/10/2024, 1:58 pm
Attach cơ sở dữ liệu trong Microsoft SQL Server 2008
Trang 1 trong tổng số 1 trang
Attach cơ sở dữ liệu trong Microsoft SQL Server 2008
Bài viết này sẽ minh họa các phương pháp sử dụng khác nhau của mệnh đề “For Attach” nhằm vượt qua những điểm hạn chế gặp phải khi sử dụng sp_attach_db và sp_attach_single_file_db.
Trong SQL Server 7.0, Microsoft đã giới thiệu hai thủ tục lưu trữ hệ thống là sp_attach_db và sp_attach_single_file_db, giúp các nhà quản trị cơ sở dữ liệu thuận tiện hơn khi thực hiện các tác vụ sau:
• Attach trực tiếp các file .MDF và .LDF vào máy chủ bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_db.
• Chỉ Attach các file .MDF bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db.
• Detach cơ sở dữ liệu khỏi máy chủ bằng cách sử dụng sp_detach_db. Copy các file .MDF tới máy chủ khác rồi sau đó attach lại vào cả hai máy chủ bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_db.
Mặc dù cả hai thủ tục này đều hữu ích với các chuyên viên quản trị cơ sở dữ liệu, thế nhưng vẫn có những hạn chế nhất định, đó là:
• Bạn không thể attach nhiều file log
• Bạn không thể attach nhiều hơn 16 file
Trong phiên bản SQL Server 2008, Microsoft công bố rằng các thủ tục lưu trữ hệ thống trên sẽ bị “bỏ xó”. Thay vào đó, Microsoft bổ sung mệnh đề “For Attach” trong câu lệnh “Create Database” của SQL.
Bài viết này sẽ minh họa các phương pháp sử dụng khác nhau của mệnh đề “For Attach” nhằm vượt qua những điểm hạn chế gặp phải khi sử dụng sp_attach_db và sp_attach_single_file_db.
Giả dụ chúng ta có cơ sở dữ liệu “MyDB1” với một file .MDF và một file .LDF tại vị trí 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data File'. Khởi tạo cơ sở dữ liệu bằng cách sử dụng đoạn mã Transact SQL sau đây.
Use Master
go
CREATE DATABASE MyDB1
ON
( NAME = MyDB1_dat,
FILENAME = 'C:Program Files
Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA
Summary Database DataData File for Monthly Archive
Microsoft SQL Server 2008 Data FileMyDB1.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = MyDB1_log,
FILENAME = 'C:Program Files
Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA
Summary Database DataData File for Monthly Archive
Microsoft SQL Server 2008 Data FileMyDB1.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
Bây giờ hãy thử detach cơ sở dữ liệu này và attach lại bằng cách sử dụng sp_detach_db và sp_attach_db. Chạy đoạn mã T-SQL sau đây:
use master
go
sp_detach_db 'MyDB1'
go
sp_attach_db 'MyDb1',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'
GO
Bạn có thể attach cơ sở dữ liệu trên bằng cách sử dụng lệnh “Create database” với mệnh đề “For Attach” như sau:
use master
go
sp_detach_db 'MyDB1'
go
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
),
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'
) for Attach
go
Bây giờ hãy detach cơ sở dữ liệu MyDB1 sau đó xóa file .LDF, tiếp theo attach lại sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db bằng cách thực thi đoạn mã T-SQL sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master..xp_cmdshell 'del "C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf"'
go
Lưu ý: Trong đoạn mã trên tôi sử dụng xp_cmdshell để xóa file .LDF. Bạn sẽ nhận thông báo lỗi sau đây nếu xp_cmdshell chưa được kích hoạt:
Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.
Bạn có thể kích hoạt xp_cmdshell bằng cách dùng đoạn mã T-SQL sau:
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'xp_cmdshell',1
go
reconfigure with override
go
Ngoài ra, bạn có thể xóa file .LDF bằng cách dùng lệnh “Del” từ dấu nhắc lệnh MS-DOS.
Bây giờ hãy attach riêng file .MDF bằng cách sử dụng sp_attach_single_file_db. Chạy câu lệnh sau đây:
use master
go
sp_attach_single_file_db 'MyDB1',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
go
Kết quả
File activation failure. The physical file name
"C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created.
Bạn có thể attach riêng file .MDF của cơ sở dữ liệu trên bằng cách sử dụng lệnh “Create database” với mệnh đề “For ATTACH_REBUILD_LOG” như sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master..xp_cmdshell 'del
"C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.ldf"'
go
Lưu ý: Khi file log được tạo lại, SQL Server tự động thêm hậu tố “_log” vào tên file.
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
) for ATTACH_REBUILD_LOG
Kết quả:
File activation failure. The physical file name "C:Program FilesMicrosoft SQL Server
MSSQL10.SQL2008MSSQLDATASummary Database DataData File for
Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database
DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created.
Kết luận
Bài viết trên đã minh họa cách sử dụng câu lệnh “Create Database” với mệnh đề “For Attach” và “for ATTACH_REBUILD_LOG” đối với một file .MDF đơn và một file .LDF đơn. Trong bài viết tiếp theo, các bạn sẽ được giới thiệu cách làm việc với nhiều file .MDF và .LDF.
Tác giả: Database Journal
Trong SQL Server 7.0, Microsoft đã giới thiệu hai thủ tục lưu trữ hệ thống là sp_attach_db và sp_attach_single_file_db, giúp các nhà quản trị cơ sở dữ liệu thuận tiện hơn khi thực hiện các tác vụ sau:
• Attach trực tiếp các file .MDF và .LDF vào máy chủ bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_db.
• Chỉ Attach các file .MDF bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db.
• Detach cơ sở dữ liệu khỏi máy chủ bằng cách sử dụng sp_detach_db. Copy các file .MDF tới máy chủ khác rồi sau đó attach lại vào cả hai máy chủ bằng cách sử dụng thủ tục lưu trữ hệ thống sp_attach_db.
Mặc dù cả hai thủ tục này đều hữu ích với các chuyên viên quản trị cơ sở dữ liệu, thế nhưng vẫn có những hạn chế nhất định, đó là:
• Bạn không thể attach nhiều file log
• Bạn không thể attach nhiều hơn 16 file
Trong phiên bản SQL Server 2008, Microsoft công bố rằng các thủ tục lưu trữ hệ thống trên sẽ bị “bỏ xó”. Thay vào đó, Microsoft bổ sung mệnh đề “For Attach” trong câu lệnh “Create Database” của SQL.
Bài viết này sẽ minh họa các phương pháp sử dụng khác nhau của mệnh đề “For Attach” nhằm vượt qua những điểm hạn chế gặp phải khi sử dụng sp_attach_db và sp_attach_single_file_db.
Giả dụ chúng ta có cơ sở dữ liệu “MyDB1” với một file .MDF và một file .LDF tại vị trí 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data File'. Khởi tạo cơ sở dữ liệu bằng cách sử dụng đoạn mã Transact SQL sau đây.
Use Master
go
CREATE DATABASE MyDB1
ON
( NAME = MyDB1_dat,
FILENAME = 'C:Program Files
Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA
Summary Database DataData File for Monthly Archive
Microsoft SQL Server 2008 Data FileMyDB1.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = MyDB1_log,
FILENAME = 'C:Program Files
Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA
Summary Database DataData File for Monthly Archive
Microsoft SQL Server 2008 Data FileMyDB1.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
Bây giờ hãy thử detach cơ sở dữ liệu này và attach lại bằng cách sử dụng sp_detach_db và sp_attach_db. Chạy đoạn mã T-SQL sau đây:
use master
go
sp_detach_db 'MyDB1'
go
sp_attach_db 'MyDb1',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'
GO
Bạn có thể attach cơ sở dữ liệu trên bằng cách sử dụng lệnh “Create database” với mệnh đề “For Attach” như sau:
use master
go
sp_detach_db 'MyDB1'
go
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
),
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'
) for Attach
go
Bây giờ hãy detach cơ sở dữ liệu MyDB1 sau đó xóa file .LDF, tiếp theo attach lại sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db bằng cách thực thi đoạn mã T-SQL sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master..xp_cmdshell 'del "C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf"'
go
Lưu ý: Trong đoạn mã trên tôi sử dụng xp_cmdshell để xóa file .LDF. Bạn sẽ nhận thông báo lỗi sau đây nếu xp_cmdshell chưa được kích hoạt:
Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.
Bạn có thể kích hoạt xp_cmdshell bằng cách dùng đoạn mã T-SQL sau:
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'xp_cmdshell',1
go
reconfigure with override
go
Ngoài ra, bạn có thể xóa file .LDF bằng cách dùng lệnh “Del” từ dấu nhắc lệnh MS-DOS.
Bây giờ hãy attach riêng file .MDF bằng cách sử dụng sp_attach_single_file_db. Chạy câu lệnh sau đây:
use master
go
sp_attach_single_file_db 'MyDB1',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
go
Kết quả
File activation failure. The physical file name
"C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created.
Bạn có thể attach riêng file .MDF của cơ sở dữ liệu trên bằng cách sử dụng lệnh “Create database” với mệnh đề “For ATTACH_REBUILD_LOG” như sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master..xp_cmdshell 'del
"C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.ldf"'
go
Lưu ý: Khi file log được tạo lại, SQL Server tự động thêm hậu tố “_log” vào tên file.
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'
) for ATTACH_REBUILD_LOG
Kết quả:
File activation failure. The physical file name "C:Program FilesMicrosoft SQL Server
MSSQL10.SQL2008MSSQLDATASummary Database DataData File for
Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database
DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created.
Kết luận
Bài viết trên đã minh họa cách sử dụng câu lệnh “Create Database” với mệnh đề “For Attach” và “for ATTACH_REBUILD_LOG” đối với một file .MDF đơn và một file .LDF đơn. Trong bài viết tiếp theo, các bạn sẽ được giới thiệu cách làm việc với nhiều file .MDF và .LDF.
Tác giả: Database Journal
Copy và Paste Trong JTextField sử dụng Clipboard
Bình thường , khi các bạn làm việc với Text .Bạn có thể sư dụng các phím Ctr + C(copy) và Ctr + V(paste) để thực hiện thao tác "copy" Text và "paste" vào các vùng TextField(TextArea).Tuy nhiên , trong bài viết này , tôi xin giới thiệu với các bạn việc thực hiên thao tác copy và paste thông qua Chuột,PopupMenu và Clipboard
Clipboard là 1 chương trình phần mềm , được dùng trong việc lưu trữ tạm thời dữ liệu khi nó được truyền giữa các tài liệu hoặc là chương trình ứng dụng, thông qua hệ thống copy và paste.Nó giống như 1 phần của hệ thống giao diện đồ họa người sử dụng (GUI)và thường được dùng như 1 khối nhớ ẩn có tính chất tạm thời .Clipboard có thể được truy cập từ hầu hết các chương trình ứng dụng chạy trong hẹ thống đó.
Khi chúng ta thực hiên copy , ví dụ như 1 đoạn đia chỉ website trên FireFox chẳng hạn,thì nó sẽ được lưu vào Clipboard.
Trong chưong trình Java này, chúng ta sẽ lấy vùng Text trong clipboard và dán vào trong JTextField của Java.Java cho phép chúng ta truy cập clipboard thông qua Công cụ Toolkit.Chúng ta cũng đề cập đến việc sử dụng PopupMenu.( Menu này sẽ hiện ra khi bạn kích chuột phải ).Chương trình sử dung lớp DataFlavor ..Lớp DataFlavor cung cấp thông tin về dữ liệu .Nhìn chung chúng được sử dụng để truy cập dữ liệu trong clipboard hoắc trong chương trình kéo thả.Trong chương trình của chúng ta , sẽ sử dụng lớp này để lấy 1 string từ clipboard.
Dưới đây là toàn bộ chương trình nguồn .Trong chương trình tôi có chú thích đầy đủ để các bạn tiện theo dõi.
//------------------------------------------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.event.ChangeListener;
public class PasteToTextF extends JFrame{
JTextField pasteField ;
JTextField copyField ;
String URL ;
JPopupMenu pm ;
JMenuItem cut ;
JMenuItem copy ;
JMenuItem paste ;
public PasteToTextF(String s) throws UnsupportedFlavorException,
IOException {
super(s) ;
//Khoi tao 1 PopupMenu va cac ItemMenu
pm = new JPopupMenu() ;
cut = new JMenuItem("Cut");
copy = new JMenuItem("Copy") ;
paste = new JMenuItem("Paste") ;
ActionListener actionListener = new MyActionListener() ;
cut.addActionListener(actionListener) ;
copy.addActionListener(actionListener) ;
paste.addActionListener(actionListener) ;
//Dua Cac ItemMenu vao PopupMenu
pm.add(cut) ;
pm.add(copy) ;
pm.add(paste);
pasteField = new JTextField(100) ;
copyField = new JTextField (100) ;
formatFied() ;
add(pasteField,BorderLayout.NORTH) ;
}
//--------------------------------------------------------------------------
public static void main(String arg[]) throws UnsupportedFlavorException,
IOException{
PasteToTextF obj = new PasteToTextF("Paste") ;
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
obj.setSize(500,100) ;
obj.setVisible(true);
}
//--------------------------------------------------------------------------
//Dinh dang pasteField
private void formatFied() {
pasteField.setBorder(BorderFactory.createLineBorder(Color.BLUE));
pasteField.setComponentPopupMenu(pm) ;//Dan popupmenu vao textfield nay
pasteField.setSelectionColor(Color.GREEN) ;
pasteField.setToolTipText("This is text field for pasting");
//Dat con tro kieu ban tay
Cursor cursor = new Cursor(Cursor.HAND_CURSOR) ;
pasteField.setCursor(cursor);
}
//--------------------------------------------------------------------------
//Lang nghe cac su kien voi popupmenu va xu ly chung
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
//Lenh paste
if ( e.getActionCommand().equals("Paste")){
try {
//Lay xau duoc luu trong clipboard
URL = (String) Toolkit.getDefaultToolkit().getSystemClipboard()
.getData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException ex) {
//xu li ngoai le trong truong hop kieu ko dc ho tro trong
//DataFlavor
Logger.getLogger(PasteToTextF.class.getName())
.log(Level.SEVERE, null, ex);
} catch (IOException ex) {
//Xu li ngoai le trong truong hop clipboard trong
Logger.getLogger(PasteToTextF.class.getName()).
log(Level.SEVERE, null, ex);
}
pasteField.setText(URL);
}
//Lenh copy
if ( e.getActionCommand().equals("Copy")){
String buffer = pasteField.getText() ;
System.out.println("Got text......");
}
//Lenh cut
if (e.getActionCommand().equals("Cut")){
pasteField.setText(null);
System.out.println("Cut text ......");
Trên đây là giao diện của chương trình sau khi chạy.Các bạn có thể tìm hiểu thêm về kĩ thuât sử dụng Toolkit và Clipboard trong các sách về lập trình Desktop với java.Bài viết dến đây là hết.Mong nhận được sự phản hồi từ các bạn
Chào các bạn
Nguồn:http://www.itgatevn.com.vn
Clipboard là 1 chương trình phần mềm , được dùng trong việc lưu trữ tạm thời dữ liệu khi nó được truyền giữa các tài liệu hoặc là chương trình ứng dụng, thông qua hệ thống copy và paste.Nó giống như 1 phần của hệ thống giao diện đồ họa người sử dụng (GUI)và thường được dùng như 1 khối nhớ ẩn có tính chất tạm thời .Clipboard có thể được truy cập từ hầu hết các chương trình ứng dụng chạy trong hẹ thống đó.
Khi chúng ta thực hiên copy , ví dụ như 1 đoạn đia chỉ website trên FireFox chẳng hạn,thì nó sẽ được lưu vào Clipboard.
Trong chưong trình Java này, chúng ta sẽ lấy vùng Text trong clipboard và dán vào trong JTextField của Java.Java cho phép chúng ta truy cập clipboard thông qua Công cụ Toolkit.Chúng ta cũng đề cập đến việc sử dụng PopupMenu.( Menu này sẽ hiện ra khi bạn kích chuột phải ).Chương trình sử dung lớp DataFlavor ..Lớp DataFlavor cung cấp thông tin về dữ liệu .Nhìn chung chúng được sử dụng để truy cập dữ liệu trong clipboard hoắc trong chương trình kéo thả.Trong chương trình của chúng ta , sẽ sử dụng lớp này để lấy 1 string từ clipboard.
Dưới đây là toàn bộ chương trình nguồn .Trong chương trình tôi có chú thích đầy đủ để các bạn tiện theo dõi.
//------------------------------------------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.event.ChangeListener;
public class PasteToTextF extends JFrame{
JTextField pasteField ;
JTextField copyField ;
String URL ;
JPopupMenu pm ;
JMenuItem cut ;
JMenuItem copy ;
JMenuItem paste ;
public PasteToTextF(String s) throws UnsupportedFlavorException,
IOException {
super(s) ;
//Khoi tao 1 PopupMenu va cac ItemMenu
pm = new JPopupMenu() ;
cut = new JMenuItem("Cut");
copy = new JMenuItem("Copy") ;
paste = new JMenuItem("Paste") ;
ActionListener actionListener = new MyActionListener() ;
cut.addActionListener(actionListener) ;
copy.addActionListener(actionListener) ;
paste.addActionListener(actionListener) ;
//Dua Cac ItemMenu vao PopupMenu
pm.add(cut) ;
pm.add(copy) ;
pm.add(paste);
pasteField = new JTextField(100) ;
copyField = new JTextField (100) ;
formatFied() ;
add(pasteField,BorderLayout.NORTH) ;
}
//--------------------------------------------------------------------------
public static void main(String arg[]) throws UnsupportedFlavorException,
IOException{
PasteToTextF obj = new PasteToTextF("Paste") ;
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
obj.setSize(500,100) ;
obj.setVisible(true);
}
//--------------------------------------------------------------------------
//Dinh dang pasteField
private void formatFied() {
pasteField.setBorder(BorderFactory.createLineBorder(Color.BLUE));
pasteField.setComponentPopupMenu(pm) ;//Dan popupmenu vao textfield nay
pasteField.setSelectionColor(Color.GREEN) ;
pasteField.setToolTipText("This is text field for pasting");
//Dat con tro kieu ban tay
Cursor cursor = new Cursor(Cursor.HAND_CURSOR) ;
pasteField.setCursor(cursor);
}
//--------------------------------------------------------------------------
//Lang nghe cac su kien voi popupmenu va xu ly chung
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
//Lenh paste
if ( e.getActionCommand().equals("Paste")){
try {
//Lay xau duoc luu trong clipboard
URL = (String) Toolkit.getDefaultToolkit().getSystemClipboard()
.getData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException ex) {
//xu li ngoai le trong truong hop kieu ko dc ho tro trong
//DataFlavor
Logger.getLogger(PasteToTextF.class.getName())
.log(Level.SEVERE, null, ex);
} catch (IOException ex) {
//Xu li ngoai le trong truong hop clipboard trong
Logger.getLogger(PasteToTextF.class.getName()).
log(Level.SEVERE, null, ex);
}
pasteField.setText(URL);
}
//Lenh copy
if ( e.getActionCommand().equals("Copy")){
String buffer = pasteField.getText() ;
System.out.println("Got text......");
}
//Lenh cut
if (e.getActionCommand().equals("Cut")){
pasteField.setText(null);
System.out.println("Cut text ......");
Trên đây là giao diện của chương trình sau khi chạy.Các bạn có thể tìm hiểu thêm về kĩ thuât sử dụng Toolkit và Clipboard trong các sách về lập trình Desktop với java.Bài viết dến đây là hết.Mong nhận được sự phản hồi từ các bạn
Chào các bạn
Nguồn:http://www.itgatevn.com.vn
Ghi dữ liệu vào file Excel
Việc ghi dữ liệu vào file Excel có hai phần: thêm mới và cập nhật.
Cũng giống như việc lấy dữ liệu từ file Excel việc ghi dữ liệu vào một file Excel được thực hiện theo những bước tương tự.
Ta sẽ dùng một biết string để lưu trữ thông số kết nối
string sheetname = "MySheet$";
string srcConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + @";Extended Properties=""Excel 8.0;HDR=YES;""";
Thêm mới dữ liệu vào file Excel
Đoan mã lệnh sau là ví dụ để bạn có thể thực hiện việc thêm mới dữ liệu vào file Excel.
OleDbConnection objConn = null;
objConn = new OleDbConnection(connString);
objConn.Open();
OleDbCommand cmd = new OleDbCommand("insert into [" + sheetname + "] (ID,Name,Desc) values (1,\"ITGATEVN\",\"Cong CNTT VietNam\",objConn)";
cmd.ExecuteNonQuery();
Nhìn vào đoạn mã lệnh trên chúng ta có thể thấy việc thêm mới dữ liệu vào file Excel, giống như việc lấy dữ liệu, được thực hiện như các bước khi làm việc với các hệ CSDL MySQL, SQL, Oracle...
Cập nhật dữ liệu vào file Excel.
Tương tự như việc thêm mới dữ liệu, việc cập nhật dữ liệu vào file Excel được thực hiện theo những bước tương tự.
Đoạn mã lệnh sau đây giúp bạn thực hiện.
OleDbConnection objConn = null;
objConn = new OleDbConnection(connString);
objConn.Open();
OleDbCommand cmd = new OleDbCommand("update [" + sheetname + "] set Name=\"ITGATEVN.COM.VN\" where ID=1",objConn)";
cmd.ExecuteNonQuery();
Kết luận
Với các đoạn mã lệnh trên, các bạn có thể nâng cấp và sử đổi để phù hợp với ứng dụng và nhu cầu của bạn. Và tốc độ truy xuất tới Excel sẽ đạt hiệu quả tốt nhất.
Các bạn hãy nhớ nguyên tắc căn bản của việc giao tiếp với Excel tương tự như với các hệ CSDL. Chỉ cần nhớ nguyên tắc này, bạn sẽ giải quyết được tất cả các tình huống với Excel.
Nguồn:http://www.itgatevn.com.vn
Cũng giống như việc lấy dữ liệu từ file Excel việc ghi dữ liệu vào một file Excel được thực hiện theo những bước tương tự.
Ta sẽ dùng một biết string để lưu trữ thông số kết nối
string sheetname = "MySheet$";
string srcConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + @";Extended Properties=""Excel 8.0;HDR=YES;""";
Thêm mới dữ liệu vào file Excel
Đoan mã lệnh sau là ví dụ để bạn có thể thực hiện việc thêm mới dữ liệu vào file Excel.
OleDbConnection objConn = null;
objConn = new OleDbConnection(connString);
objConn.Open();
OleDbCommand cmd = new OleDbCommand("insert into [" + sheetname + "] (ID,Name,Desc) values (1,\"ITGATEVN\",\"Cong CNTT VietNam\",objConn)";
cmd.ExecuteNonQuery();
Nhìn vào đoạn mã lệnh trên chúng ta có thể thấy việc thêm mới dữ liệu vào file Excel, giống như việc lấy dữ liệu, được thực hiện như các bước khi làm việc với các hệ CSDL MySQL, SQL, Oracle...
Cập nhật dữ liệu vào file Excel.
Tương tự như việc thêm mới dữ liệu, việc cập nhật dữ liệu vào file Excel được thực hiện theo những bước tương tự.
Đoạn mã lệnh sau đây giúp bạn thực hiện.
OleDbConnection objConn = null;
objConn = new OleDbConnection(connString);
objConn.Open();
OleDbCommand cmd = new OleDbCommand("update [" + sheetname + "] set Name=\"ITGATEVN.COM.VN\" where ID=1",objConn)";
cmd.ExecuteNonQuery();
Kết luận
Với các đoạn mã lệnh trên, các bạn có thể nâng cấp và sử đổi để phù hợp với ứng dụng và nhu cầu của bạn. Và tốc độ truy xuất tới Excel sẽ đạt hiệu quả tốt nhất.
Các bạn hãy nhớ nguyên tắc căn bản của việc giao tiếp với Excel tương tự như với các hệ CSDL. Chỉ cần nhớ nguyên tắc này, bạn sẽ giải quyết được tất cả các tình huống với Excel.
Nguồn:http://www.itgatevn.com.vn
Similar topics
» Gán phím tắt cho các biểu tượng trong Microsoft Word để thao tác nhanh hơn
» Bạn chỉ cần in gấp một số tài liệu cá nhân như danh thiếp, bì thư..v.v......
» Giấu đoạn văn bản trong M.Word
» Thủ thuật PowerPoint
» Xác định vị trí trong tòa nhà
» Bạn chỉ cần in gấp một số tài liệu cá nhân như danh thiếp, bì thư..v.v......
» Giấu đoạn văn bản trong M.Word
» Thủ thuật PowerPoint
» Xác định vị trí trong tòa nhà
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
8/4/2013, 7:28 pm by nhokbmt
» Làm thủ tục hải quan – giao nhận XNK giá rẻ
19/9/2012, 3:50 pm by nhokbmt
» Tăng like Facebook, viết app (ứng dụng) Facebook giá rẻ
25/6/2012, 1:38 pm by nhokbmt
» Trường Nhật Ngữ Top Globis Khai Giảng Khóa Mới Vào Tháng 06.2012
15/5/2012, 6:14 pm by nguyentuvi
» Nhất Nguyên: in băng rôn, in quảng cáo, hình ảnh sắc nét, giá cạnh tranh (35.000đ/1 m)
4/3/2012, 9:38 am by nhokbmt
» Nhất Nguyên: in băng rôn, in quảng cáo, hình ảnh sắc nét, giá cạnh tranh (35.000đ/1 m)
28/2/2012, 9:40 am by nhokbmt
» Học tiếng Nhật - Top Globis
25/11/2011, 4:36 pm by nguyentuvi
» Giấy các loại giá rẻ Couche, Dulex, Ivory, …v..v..
22/11/2011, 9:10 am by nhokbmt
» Trải nghiệm xuất gia gieo duyên
23/9/2011, 11:24 pm by HUY_COC