您的位置:首页 > 编程语言 > Java开发

mysql-java笔记

2014-05-24 13:23 204 查看
<pre name="code" class="java">import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {

private static Connection conn;
public static void connect() throws SQLException
{
conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "danding");
}
public static void listall(String tableName) throws SQLException {
Statement statement = conn.createStatement();
statement.execute("select* from "+tableName);
ResultSet res = statement.getResultSet();
ResultSetMetaData metadata = res.getMetaData();
int n=metadata.getColumnCount();
for (int i = 1; i <= n; i++) {
System.out.print(metadata.getColumnName(i)+"\t");
}
System.out.println();
while (res.next()) {
for (int i = 1; i <= n; i++) {
System.out.print(res.getObject(i)+"\t");
}
System.out.println();

}
}
public ResultSet getResultSet(String query) throws SQLException
{
Statement statement = conn.createStatement();
statement.execute(query);
ResultSet res = statement.getResultSet();
return res;
}
public void insertIFNotExists() throws SQLException
{
PreparedStatement preparedStatement = conn.prepareStatement("insert into s select ?,?  from s "
+ "where not exists (select* from s where id=?)");
preparedStatement.setInt(1, 2);
preparedStatement.setString(2,"李四");
preparedStatement.setInt(3, 2);
preparedStatement.addBatch();
preparedStatement.setInt(1, 3);
preparedStatement.setString(2,"王五");
preparedStatement.setInt(3, 3);
preparedStatement.addBatch();
preparedStatement.executeBatch();
}
public boolean checkDatabase(String name) throws SQLException
{
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost", "root", "danding");
DatabaseMetaData tt = connection.getMetaData();
ResultSet rs = tt.getCatalogs();
while (rs.next()) {
if (rs.getString(1).equalsIgnoreCase(name)) {
return true;
}
}
return false;
}
public boolean checkTables(String name) throws SQLException
{
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "danding");
DatabaseMetaData tt = connection.getMetaData();
ResultSet rs = tt.getTables("test", null, null, new String[]{"TABLE"});
ResultSetMetaData metadata = rs.getMetaData();
System.out.println(metadata.getColumnCount());
while (rs.next()) {
if (rs.getString("TABLE_NAME").equalsIgnoreCase(name)) {
return true;
}
//			for (int i = 1; i <= 10; i++) {
//				System.out.print(metadata.getColumnLabel(i)+" ");
//			}
//			System.out.println();
}
return false;
}
public void run()
{
try {
connect();
System.out.println(checkTables("s"));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Test().run();
}

}



<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">注意 "create database ?" 不能用预处理,还有就是select ? from table;  等类似的不能用预处理。insert into table1 values(?,?,?)这样可以</span>


connection.setAutoCommit(false);

PreparedStatement statement = connection.prepareStatement("INSERT INTO TABLEX VALUES(?, ?)");

statement.setInt(1, 1);

statement.setString(2, "Cujo");

statement.addBatch();

statement.setInt(1, 2);

statement.setString(2, "Fred");

statement.addBatch();

statement.setInt(1, 3);

statement.setString(2, "Mark");

statement.addBatch();

int [] counts = statement.executeBatch();

connection.commit();//如果没有这一步connection.setAutoCommit(false);
可以不提交

出现这个错误Can not issue data manipulation statements with executeQuery().

意味着,插入,更新,删除的时候,不应该用statement.executeQuery(),这只有查询结果集的时候才用。改为statement.execute(sql)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: