如何使用java-servlet在mysql数据库中创建或不创建表?

时间:2013-10-08 06:12:18

标签: java mysql jsp servlets

我想知道在使用java处理数据库时,如何检查表是否已经创建。

示例:

if( table exits )
{
      do something;
}
else {
       do something;
}

编辑版: 这是我在jsp中尝试过的代码 但我在“rs1 = pt.executeQuery();”中得到一些例外。线

     <%  
       PreparedStatement pt=con.prepareStatement("select * from test");
       ResultSet rs1=null;

               rs1=pt.executeQuery();
      int count=0;
      while(rs1.next())
      count++;

      if(count>0)
      {
        //table exists
      %>
     <script type="text/javascript">

     alert("see table present");
     </script>
     <%
      }
     else
      {
      %>
       <script type="text/javascript">

      alert("see table not present");
      </script>
     <%

      }     

   %>

错误:这是我得到的错误                 org.apache.jasper.JasperException:在第80行处理JSP页面/sem-duration.jsp时发生异常

     77:            PreparedStatement pt=con.prepareStatement("select * from test");
     78:            ResultSet rs1=null;
     79:            
     80:                    rs1=pt.executeQuery();
     81:           int count=0;
     82:           while(rs1.next())
     83:           count++;

3 个答案:

答案 0 :(得分:3)

当你使用jdbc创建表时,你必须使用类似这样的preparedstatement

PreparedStatement pt=connection.prepareStatement("create table test (id int);");

现在要执行它,您正在使用pt.executeUpdate()pt.executeUpdate()会返回int   现在检查

if(pt.executeUpdate()>0)
 {
//table created
}
else
{
//not
}

假设您没有使用jdbc创建表,而您只是测试表是否存在,那么您可以尝试下面的

   PreparedStatement pt=connection.prepareStatement("SELECT *
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename'");
ResultSet rs=pt.executeQuery();
int count=0;
while(rs.next())
count++;
}
if(count>0)
{
//table exists
}
else
{
//table does not exist
}

另一种方式是以下列方式使用databasemeta数据

DatabaseMetaData meta = connection.getMetaData(); 
    ResultSet res = meta.getTables(null, null, tableName, null); 
    while(res.next()
{
//table exists
}

答案 1 :(得分:0)

我认为这是。

IF  NOT EXISTS (SELECT * FROM Tablename)
BEGIN
// write the codes here
END

如果您只是想检查,也可以执行此操作。

SELECT 1 FROM tablename ;

如果不存在表,则返回0行,否则将大于零。

答案 2 :(得分:0)

如果您只想检查表是否存在,可以运行:

SHOW TABLES like 'your_table_name';

如果表不存在,结果集将为空(有关详细信息,请查看documentation)。

由于您在servlet中,因此需要将此查询传递给JDBC(Prepared)语句。