Database Integration: A Few Frustrations
On paper, the database integration is very impressive. Studio boasts a fully integrated environment that supports MySQL, Oracle, Microsoft SQL Server, PostgreSQL, and SQLLite. In reality, this simply means that you can make a connection to any of these databases and run a query against them or test your SQL. There is no real integration beyond the fact that the connection manager is hosted by the same application as the code editor/debugger.
|Figure 2. Playing with Data: Zend Studio's database manager is inspecting the data from MySQL.|
Compare that with Microsoft Visual Studio.NET, as an example, where, with a similar manager, you can connect to a database and then drag the database objects to your code window where connection code to talk to the database and run the specific query or stored procedure that you were inspecting is generated automatically. No such functionality exists here, which is a real shame, because it would be amazingly useful if you could pick up a MySQL table and drop it on a code window and have the mysql_connect
and other relevant commands generated for you.
Figure 2 shows the database manager in action, where a MySQL database is being inspected. From here you can edit the existing data in the table, but there is no facility for adding new rows, which is very annoying, particularly if you are starting a new program and want some data preloaded. You have to manually type an INSERT query and run it.
Also, the choice of icon for editing is a little unintuitive. In Figure 2 you can make out the lock, which shows that the table is locked and you cannot edit (the "lock" icon is the yellowish one in the upper right). If you click this icon to unlock it, what you get is a red 'X' over the top of your lock. This confused me on several occasions, as the red X connotes something you are prevented from doing rather than something accessible.
Another annoyance is that you cannot edit the data in this grid when it is the result of a query. Figure 3 shows the same data, but instead of being a direct dump of the table (SELECT * FROM ANSWERS) it is a query of the data (SELECT * FROM ANSWERS WHERE ANSWERVALUE=2). It is identical in almost every regard, except that you cannot edit the data at all now.
|Figure 3. Queried View of the Data: When data is queried rather than dumped, as shown here, you can forget about editing it. |
There are two problems with this inability to edit queried data. First of all, it is very unintuitive. I was frequently confused about whether I could edit the data or not, until I realized that I needed to inspect the query entry window (which isn't always visible) to see if I was in 'query' view mode or 'table' view mode. The second problem is that with large tables you cannot query a row in order to find it and edit it. With a tool such as MYSQLCC (which I had hoped Zend Studio might replace), you can run a SELECT query to find the record you want and make the edits that you want to the grid of returned results. Zend doesn't offer this flexibility, which is a real shame.
Overall the data integration aspect of the IDE is a step in the right direction, but it has too many annoyances and too little hard functionality to be useful. For the time being I see PHP developers continuing to use a tool such as MySQLCC or the equivalent tool for other databases.