sqlblob
⑴ 怎樣用sql語句查看blob欄位的長度
select dbms_lob.getLength(zp) from kk.kkbj
select dbms_lob.getLength(zp) from kk.kkbj
也可以在後邊加where條件
這條語句可以查看kk.kkbj表中類型為blob的zp這個欄位
在sql plus里執行這條語句的效果是這樣的
Sql代碼
SQL> select dbms_lob.getLength(zp) from kk.kkbj ;
SQL> select dbms_lob.getLength(zp) from kk.kkbj ;
DBMS_LOB.GETLENGTH(ZP)
⑵ DB2中用SQL怎麼插入一個BLOB對象
要保存圖片的欄位列的類型設置成image
然後插入的時候,取它的絕對路徑
insert into 表名 values(@"C:/123.JPG")
可以用BLOB(string)函數將字元串轉化為blob再插入,如下:
create table test(c1 blob(200)); insert into test values(blob('Hello, world'));
其他的方法可能需要用別的語言來寫了,這種是在資料庫下操作
⑶ 如何使用PL/SQL讀取資料庫中的BLOB對象
使用PL/SQL從資料庫中讀取BLOB對象:
1.首先,確認現有對象
SQL> col fdesc for a30
SQL> select fid,fname,fdesc from eygle_blob;
FID FNAME FDESC
------------------------ ------------------------------
1 ShaoLin.jpg 少林寺-康熙手書
2 DaoYing.jpg 倒映
2.創建存儲Directory
SQL> connect / as sysdba
Connected.
SQL> create or replace directory BLOBDIR as 'D:oradataPic';
Directory created.
SQL>
SQL> grant read,write on directory BLOBDIR to eygle;
Grant succeeded.
SQL>
3.創建存儲過程
SQL> connect eygle/eygle
Connected.
SQL>
SQL> CREATE OR REPLACE PROCEDURE eygle_mp_blob (piname varchar2,poname varchar2) IS
2 l_file UTL_FILE.FILE_TYPE;
3 l_buffer RAW(32767);
4 l_amount BINARY_INTEGER := 32767;
5 l_pos INTEGER := 1;
6 l_blob BLOB;
7 l_blob_len INTEGER;
8 BEGIN
9 SELECT FPIC
10 INTO l_blob
11 FROM eygle_blob
12 WHERE FNAME = piname;
13
14 l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
15 l_file := UTL_FILE.FOPEN('BLOBDIR',poname,'wb', 32767);
16
17 WHILE l_pos < l_blob_len LOOP
18 DBMS_LOB.READ (l_blob, l_amount, l_pos, l_buffer);
19 UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
20 l_pos := l_pos + l_amount;
21 END LOOP;
22
23 UTL_FILE.FCLOSE(l_file);
24
25 EXCEPTION
26 WHEN OTHERS THEN
27 IF UTL_FILE.IS_OPEN(l_file) THEN
28 UTL_FILE.FCLOSE(l_file);
29 END IF;
30 RAISE;
31 END;
32 /
Procere created.
4.最後取出數據
SQL> host ls -l d:oradataPic
total 7618
-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
-rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg
SQL> exec eygle_mp_blob('ShaoLin.jpg','01.jpg')
PL/SQL procere successfully completed.
SQL> host ls -l d:oradataPic
total 11072
-rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01.jpg
-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
-rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg
SQL>
SQL> exec eygle_mp_blob('DaoYing.jpg','02.jpg')
PL/SQL procere successfully completed.
SQL> host ls -l d:oradataPic
total 15236
-rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01.jpg
-rwxrwxrwa 1 Administrators SYSTEM 2131553 Apr 26 07:19 02.jpg
-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
-rwxrwxrwa
⑷ oracle.sql.BLOB的jar包是什麼
class12.jar
在你的 oracle 安裝目錄下面有 oracle安裝目錄\proct\10.2.0\db_1\jdbc\lib
⑸ 如何用SQL 語句 替換表中的blob數據
例如 Table1中有兩個欄位,一個是ID(int類型),一個是content(text類型)。則在Query Analyzer中執行SQL語句:insert into Table1 values(1,'a test content')就可以了啊。要顯示的話,要雙擊一下。
⑹ 請問sql server2008資料庫如何讀取BLOB欄位的值
@Override
public String getFormViewById(final String id) {
return (String)getHibernateTemplate().execute(new HibernateCallback<Object>(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String sql = "select formView from sys_forms where id='" + id + "'";
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String content = "";
try {
conn = session.connection();
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
while(rs.next()){
Blob blob = (Blob) rs.getBlob("formView");
int bolblen = (int) blob.length();
byte[] data = blob.getBytes(1, bolblen);
content = new String(data,"utf-8");
}
}finally{
conn.close();
stmt.close();
}
return content;
}
});
}
⑺ 怎樣將java.sql.Blob與oracle.sql.BLOB進行轉換
1,java.sql.Blob與oracle.sql.BLOB
這兩個blob僅僅是大小寫不同,但是差異很大,java.sql.Blob是一個介面,而oracle.sql.BLOB是一個實現java.sql.Blob的類,並且還有很多擴展的屬性和方法,注意不要搞混了。
2,JDBC2.0和JDBC3.0的問題
classes12.zip實現了JDBC2.0(JDK1.3),而JDBC2.0對於Blob的操作只有讀,沒有寫,所以classes12.zip只好自己擴展了一套對Blob進行寫的API,我的例子就是用了這套API。
ojdbc14.jar實現了JDBC3.0(JDK1.4),JDBC3.0已經包括了對Blob寫的操作,而ojdbc14.jar也實現了該API。
java.sql.Blob blob = rs.getBlob("ZIP_DATA");
oracle.sql.BLOB obb = (oracle.sql.BLOB) blob;//這樣它會報.ClassCastException->解決辦法,那一個封裝類來處理類型不匹配問題:
public int setBytes(long pos, byte[] bytes) throws SQLException
{
//[weblogic]
if (blob instanceof weblogic.jdbc.vendor.oracle.OracleThinBlob)
{
weblogic.jdbc.vendor.oracle.OracleThinBlob oBlob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) blob;
return oBlob.putBytes(pos, bytes);
}
//[endweblogic]
//[websphere]
if (blob instanceof oracle.sql.BLOB)
{
oracle.sql.BLOB oBlob = (oracle.sql.BLOB) blob;
return oBlob.putBytes(pos, bytes);
}
//[endwebsphere]
return this.blob.setBytes(pos, bytes);
}
雖然只列出了一個方法,但核心就在這里了
BossThinBlob bossThinBlob = new BossThinBlob(rs.getBlob("ZIP_DATA"));
⑻ 如何用sql語句寫入含blob類型欄位的數據
很久沒用過PB了,網上找了一篇,大致看了一下,應該沒什麼問題 --轉自51CTO論壇 在PowerBuilder裡面操作BLOB數據地靈活技術 PowerBuilder提供的BLOB(Binary Large Object)數據類型可以用來處理大型數據
⑼ sql語句怎麼插入一個blob類型的欄位
在PowerBuilder裡面操作BLOB數據地靈活技術 PowerBuilder提供的BLOB(Binary Large Object)數據類型可以用來處理大型數據
⑽ sql怎麼讀取BLOB類型的數據
clob數據還好說 可以使用to_str轉換成字元串, blob是二進制數據, 得把二進制數據轉換才行