我访问使用JDBC和mySQL java connector公共MySQL数据库。 exonCount是int(10),exonStarts和exonEnds是longblob字段。BLOB字段与MATLAB
javaaddpath('mysql-connector-java-5.1.12-bin.jar')
host = 'genome-mysql.cse.ucsc.edu';
user = 'genome';
password = '';
dbName = 'hg18';
jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbName);
jdbcDriver = 'com.mysql.jdbc.Driver';
dbConn = database(dbName, user , password, jdbcDriver, jdbcString);
gene.Symb = 'CDKN2B';
% Check to make sure that we successfully connected
if isconnection(dbConn)
qry = sprintf('SELECT exonCount, exonStarts, exonEnds FROM refFlat WHERE geneName=''%s''',gene.Symb);
result = get(fetch(exec(dbConn, qry)), 'Data');
fprintf('Connection failed: %s\n', dbConn.Message);
end
下面是结果:
result =
[2] [18x1 int8] [18x1 int8]
[2] [18x1 int8] [18x1 int8]
result{1,2}'
ans =
50 49 57 57 50 57 48 49 44 50 49 57 57 56 54 55 51 44
这是不对的。第2列和第3列中的矢量长度应与第1列中的数字相匹配。
第1斑点,例如,应该是[21992901; 21998673]
。我如何转换它?
更新:
就提交这个问题,我想这可能是一个字符串的十六进制表示之后。 并确认:
>> char(result{1,2}')
ans =
21992901,21998673,
所以现在我需要在所有斑点十六进制数据转换成数字载体。仍想以矢量化的方式来做,因为行数可能很大。
有趣的是,在过去的几天里,在CSS上有一个关于从Matlab访问数据库CLOB的活动线程:http://www.mathworks.com/matlabcentral/newsreader/view_thread/278869 (不回答你的问题但可能会对在这里偶然发现的用户感兴趣) – 2010-04-15 20:06:30