元数据的使用
package bull04.Metadata;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import org.junit.Test;
import bull04.C3P0.C3P0JDBCUtils;
/**
* 元数据的使用
* @author 45度炸
*
*/
public class MetadataDemo1 {
@Test
/**
* 数据库元数据
*/
public void demo1() {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
conn = C3P0JDBCUtils.getConnection();
try {
DatabaseMetaData metaData = conn.getMetaData();
System.out.println("驱动名称:" + metaData.getDriverName());
System.out.println("url:" + metaData.getURL());
System.out.println("用户名:" + metaData.getUserName());
rs = metaData.getPrimaryKeys(null, null, "category");
while(rs.next()) {
String keyName = rs.getString("COLUMN_NAME");
System.out.println(keyName);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0JDBCUtils.closeResource(rs, psmt, conn);
}
}
@Test
/**
* 参数元数据
*/
public void demo2() {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try {
conn = C3P0JDBCUtils.getConnection();
String sql = "updata category set cname = ? where cid = ?";
psmt = conn.prepareStatement(sql);
ParameterMetaData meteData = psmt.getParameterMetaData();
int count = meteData.getParameterCount();
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0JDBCUtils.getConnection();
}
}
@Test
/**
* 结果元数据
*/
public void demo3() {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try {
conn = C3P0JDBCUtils.getConnection();
String sql = "select * from category";
psmt = conn.prepareStatement(sql);
rs = psmt.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int count = metaData.getColumnCount();
for(int i = 1;i <= count;i++) {
String DBname = metaData.getCatalogName(i);
String name = metaData.getColumnName(i);
String type = metaData.getColumnTypeName(i);
System.out.println(DBname+"---"+name+"---"+type);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0JDBCUtils.closeResource(rs, psmt, conn);
}
}
}
元数据案例
package bull04.Metadata;
/**
* 元数据案例
* 传参实现增删改
*/
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import bull04.C3P0.C3P0JDBCUtils;
public class MyDBUtils {
public static void main(String[] args) {
MyDBUtils.update("insert into category value(?,?)", 4,"箱包");
}
public static void update(String sql,Object... obj) {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try {
conn = C3P0JDBCUtils.getConnection();
psmt = conn.prepareStatement(sql);
ParameterMetaData metaData = psmt.getParameterMetaData();
for(int i = 1;i <= metaData.getParameterCount();i++) {
psmt.setObject(i, obj[i-1]);
}
int i = psmt.executeUpdate();
if(i > 0) {
System.out.println("操作成功!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
C3P0JDBCUtils.closeResource(rs, psmt, conn);
}
}
}