mysql - 处理 OOP 连接到 MySQL 数据库

标签 mysql database oop object processing

我和一个 friend 正在尝试用 Processing 编写一个程序。该程序需要能够连接到我们的MySQL数据库随机拉取信息并显示出来。我们已经做了很多工作。使用以下代码

    import de.bezier.data.sql.*;

     MySQL dbconnection;

     void setup()
     {
      size( 100, 100 );

     String user     = "username";
     String pass     = "password";

     // name of the database to use
     String database = "databasename";

     // name of the table that will be created
     //
     String table    = "tablename";

     //
     dbconnection = new MySQL( this, "ip", database, user, pass );

     if ( dbconnection.connect() )
     {
    // now read it back out
    //
       dbconnection.query( "SELECT COUNT(id) FROM quiz_table" );
       dbconnection.next();
       int NumberOfRows = dbconnection.getInt(1);
       float random = random(1, NumberOfRows);
       int roundrandom = round(random);
       println(" Row Number:  " + roundrandom );


       dbconnection.query( "SELECT * FROM quiz_table WHERE id =" + roundrandom);

       while (dbconnection.next())
       {
        int n = dbconnection.getInt("id");
        String a = dbconnection.getString("name");
        String c = dbconnection.getString("charactor");
        String m = dbconnection.getString("game");
        int y = dbconnection.getInt("year");
        String q= dbconnection.getString("quote");
        println(n + "   " + a + "   " + c + "   " + m + "   " + y + "   " + q);
       }
        }
        else
        {
         // connection failed !
         }

         }

          void draw()
              {
                   // i know this is not really a visual sketch ...
              }

这似乎工作正常。但是我们计划让程序执行更多任务并使事情更易于管理我们想制作一些对象在这种情况下我想制作一个在调用时连接到数据库的对象。以下是我想出的,但尽管重新设计了几种方法,但我还是无法让它正常工作。

    import de.bezier.data.sql.*;

    MySQL dbconnection;
    connect1 myCon;

    void setup()
              {
             size(300,300);

   myCon = new connect1("username","password","database","table");
   myCon.dbconnect();
              }

      void draw()
        {

        }


      class connect1 {

      String user; 
      String pass; 
      String data; 
      String table; 


     connect1(String tempuser, String temppass, String tempdata, String temptable) {

     user = tempuser;
     pass = temppass;
     data = tempdata;
     table = temptable;

      } 

     void dbconnect(){

 dbconnection = new MySQL( this, "ip", data, user, pass );

if ( dbconnection.connect() )
{
    // now read it back out

    dbconnection.query( "SELECT COUNT(id) FROM table" );
    dbconnection.next();
    int NumberOfRows = dbconnection.getInt(1);
    float random = random(1, NumberOfRows);
    int roundrandom = round(random);
    println(" Row Number:  " + roundrandom );


    dbconnection.query( "SELECT * FROM table WHERE id =" + roundrandom);

    while (dbconnection.next())
    {
        int n = dbconnection.getInt("id");
        String a = dbconnection.getString("name");
        String c = dbconnection.getString("charactor");
        String m = dbconnection.getString("game");
        int y = dbconnection.getInt("year");
        String q= dbconnection.getString("quote");
        println(n + "   " + a + "   " + c + "   " + m + "   " + y + "   " + q);
       }
}
else
{
    println("fail");
}

 }
   //end of class  
  }

对不起,如果这很难理解

最佳答案

MySQL 的构造函数需要一个 PApplet 作为第一个参数。当您在您的对象中调用 new MySQL(this 时,this 不再像您的第一个程序中那样引用主 PApplet。

解决此问题的最简单方法可能是:

myCon.dbconnect(this); // send the PApplet as argument
...
void dbconnect(PApplet parent) {
  dbconnection = new MySQL( parent, "ip", data, user, pass );
  ...

另一种选择是将 PApplet 传递给对象的构造函数,将其存储在属性中,并在调用 new MySQL 时使用该属性。

关于mysql - 处理 OOP 连接到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875791/

相关文章:

database - 按日期绘制 Twitter 搜索结果的词云? (使用 R)

java - 遥不可及的声明,永无止境的倒计时

php - 按日期订购特定 ID - 只取出一个(队列系统)

php - MySQL 按时间戳分组/排序无法按预期工作

php - 将 html 的值传递给 PHP 变量

java - 是否可以将数据库文件保存到SD卡?

mysql - 数据库设计——多个外键

javascript - 在 Javascript 中嵌套对象 - 匿名不是函数错误

C# 缺乏静态继承——我该怎么办?

mysql - 如何根据 SQL 中的条件选择组中的一行?