-1

我想知道在使用 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++;
4

3 回答 3

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
}
于 2013-10-08T06:21:50.427 回答
0

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

SHOW TABLES like 'your_table_name';

如果表不存在,结果集将为空(查看文档以获取更多详细信息)。

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

于 2013-10-08T06:28:02.253 回答
0

我想这会。

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

如果您只想检查,也可以通过执行此操作来完成。

SELECT 1 FROM tablename ;

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

于 2013-10-08T06:20:53.390 回答