MySQL连接样例!

import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.ResultSet;
import  java.sql.ResultSetMetaData;
import  java.sql.SQLException;
import  java.sql.Statement;

public   class  OperateDB  {
    
    
public static ResultSet queryDB(String sql)throws ClassNotFoundException{
        Connection con
=null;
        Statement stmt
=null;
        ResultSet rs
=null;
        
//StringBuffer sb=new StringBuffer();
        try{
            
//Class.forName("com.mysql.jdbc.Driver");
            con=OperateDB.getConnection(con);
            
//con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/menagerie","root","333");
            stmt=con.createStatement();
            rs
=stmt.executeQuery(sql);
        }
catch(Exception e){
            e.printStackTrace();
        }


        
return rs;
    }

    
public static int updateDB(String sql)throws ClassNotFoundException{

        Statement sm
=null;
        Connection con
=null;
        
int affectRows=0;
        
try{
            con
=OperateDB.getConnection(con);
            
//con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/menagerie","root","333");
            sm=con.createStatement();
            affectRows
=sm.executeUpdate(sql);
        }
catch(Exception e){
            e.printStackTrace();
            System.out.println(
"error updateDB!");
            affectRows
=Statement.EXECUTE_FAILED;
        }
finally{
            closeStatement(sm);
        }

            
        
return affectRows;
            
    }

    
public static void closeStatement(Statement sm){
        
if(sm!=null){
            
try{
                sm.close();
            }
catch(SQLException e){
                e.printStackTrace();
            }

        }

    }

    
/*public static void showResultSet(ResultSet rs){
        if(rs==null){
            return;
        }
        try{
            ResultSetMetaData md=rs.getMetaData();
            int columnCount = md.getColumnCount();
            if(!rs.isBeforeFirst()){
                rs.beforeFirst();
            }
            while(rs.next()){
                for(int i=0;i<columnCount;i++){
                    System.out.print(rs.getObject(i)+" ");
                }
                System.out.print(rs.getObject(columnCount)+" ");
                rs.beforeFirst();
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
*/

    
public static Connection getConnection(Connection con) throws ClassNotFoundException{
        
try{    
            Class.forName(
"com.mysql.jdbc.Driver");
            
if(con==null){
            
                con
=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/menagerie","root","333");
            }

        }
catch(SQLException e){
            e.printStackTrace();
        }

        
return con;
    }

    
public static void closeConnection(Connection con){
        
if(con!=null){
            
try{
                con.close();
            }
catch(SQLException e){
                e.printStackTrace();
            }

        }

    }

    
    
public static void main(String []args) throws ClassNotFoundException{
        String sql
="";
        ResultSet rs
=null;
        Connection con
=null;
        Statement sm
=null;
        
int inte=0;
        sql
="select * from pet;";
        String updatesql
="update pet set sex=null where birth='1997-12-09'";
        
try{
            rs
=OperateDB.queryDB(sql);
            
//OperateDB.showResultSet(rs);
            while(rs.next()){
                System.out.println(rs.getObject(
"name"));
            }

            inte
=OperateDB.updateDB(updatesql);
            System.out.println(
"updateDB= "+inte);
        }
catch(Exception e){
            e.printStackTrace();
        }

        
finally{
            
try{
                rs.close();
            }
catch(SQLException e){
                e.printStackTrace();
            }

            
            closeStatement(sm);
            closeConnection(con);
        }

        
        
    }

}

以下是一个使用 Flink 的 `TwoPhaseCommitSinkFunction` 将数据写入 MySQL 数据库的样例代码: ```java public class MySqlTwoPhaseCommitSink extends TwoPhaseCommitSinkFunction<MyData, Connection, Void> { private final String username; private final String password; private final String drivername; private final String dburl; public MySqlTwoPhaseCommitSink(String username, String password, String drivername, String dburl) { this.username = username; this.password = password; this.drivername = drivername; this.dburl = dburl; } @Override public void invoke(TransactionContext transactionContext, MyData myData, Context context) throws Exception { // do nothing in invoke, wait for the prepareTransaction method } @Override public void prepareTransaction(TransactionContext transactionContext) throws Exception { // create a new connection Connection connection = DriverManager.getConnection(dburl, username, password); // set the connection to the transaction context transactionContext.setTransactionConnection(connection); } @Override public void commitTransaction(TransactionContext transactionContext) throws Exception { // get the connection from the transaction context Connection connection = transactionContext.getTransactionConnection(); // commit the transaction connection.commit(); // close the connection connection.close(); } @Override public void abortTransaction(TransactionContext transactionContext) throws Exception { // get the connection from the transaction context Connection connection = transactionContext.getTransactionConnection(); // rollback the transaction connection.rollback(); // close the connection connection.close(); } @Override public TypeInformation<Void> getProducedType() { // return void as the produced type return TypeInformation.of(Void.class); } @Override protected void finalize() throws Throwable { // close the connection if it hasn't been closed yet DriverManager.getConnection(dburl, username, password).close(); } } ``` 在上面的代码中,`MyData` 是需要写入 MySQL 数据库的数据类型。在 `invoke` 方法中,我们不做任何操作,只是等待 `prepareTransaction` 方法。在 `prepareTransaction` 方法中,我们创建一个新的 MySQL 数据库连接并将其设置到事务上下文中。在 `commitTransaction` 和 `abortTransaction` 方法中,我们获取事务上下文中的连接并提交或回滚事务,然后关闭连接。在 `getProducedType` 方法中,我们返回 `void` 类型作为生产类型。在 `finalize` 方法中,我们确保关闭连接。 使用上面的代码,我们可以使用以下方式将数据写入 MySQL 数据库: ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<MyData> dataStream = ... // get the data stream MySqlTwoPhaseCommitSink sink = new MySqlTwoPhaseCommitSink(username, password, drivername, dburl); TwoPhaseCommitSinkFunctionWrapper<MyData, Void> sinkWrapper = TwoPhaseCommitSinkFunctionWrapper.newBuilder(sink).build(); dataStream.addSink(sinkWrapper); env.execute(); ``` 在上面的代码中,我们创建了一个 `MySqlTwoPhaseCommitSink` 对象,并使用 `TwoPhaseCommitSinkFunctionWrapper` 将其包装在内。然后,我们将数据流添加到这个包装器中,并执行任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值