如何解决将Processing与SQL数据库连接并获取列名
我已使用数据库库“ de.Bezier.data.sql”连接了Processing和sql。 我不知道如何获取特定表中的列名。 我得到了正确的数据库名称,但是由于列“ Tables_in_sql7363100”的名称而得到以下内容
import de.bezier.data.sql.*;
MysqL sql;
String[] tableNames;
String[] columnNames;
void setup() {
size(300,300);
database_connection();
if (connect) {
tableNames = sql.getTableNames();
for (int i=0; i<tableNames.length; i++) {
println(tableNames[i]);
}
columnNames = sql.getColumnNames();
for (int i=0; i<ColumnNames.length; i++) {
println(columnNames[i]);
}
}
}
void draw() {
background(255);
}
void database_connection() {
sql = new MysqL(this,"ServerName","DataBase","DUN","PW");
if (sql.connect()) {
connect = true;
connect_status = "Conected";
} else {
connect = false;
connect_status = "Connection Failed";
}
}
解决方法
我所看到的有2个问题。您感兴趣的第一个是您没有选择任何表。这就是为什么您没有列列表的原因。您可以使用简单的查询来解决此问题:
sql.query("SELECT * FROM myTable");
但这不是唯一的事情:您没有考虑滞后。它现在可以在本地数据库上运行,因为时滞确实很低,但这无法通过Internet传输。这是一个示例,其中显示公共测试数据库中的列以及从查询中获取结果需要多长时间:
import de.bezier.data.sql.*;
MySQL sql;
String user = "rfamro";
String pass = "";
String server = "mysql-rfam-public.ebi.ac.uk:4497";
String database = "Rfam";
String[] columnNames;
void setup() {
size(300,300);
sql = new MySQL(this,server,database,user,pass);
}
void draw() {
if (columnNames != null) {
println("It took " + millis() + "ms to get this data back.");
for (String s : columnNames) {
println(s);
}
noLoop();
} else if (sql.connect()) {
sql.query("SELECT * FROM family");
sql.next(); // only use .next when you know you have data
columnNames = sql.getColumnNames();
}
}
从这里开始,需要2到7秒的时间才能取回数据。您将了解,setup()
方法运行大约需要几毫秒,到那时您将没有任何结果。
希望这会有所帮助。玩得开心!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。