我想知道在使用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++;
答案 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)语句。