欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java连接操作mysql

程序员文章站 2022-09-14 14:22:38
文章目录常用类ConnectionStatementPreparedStatementResultSetRowSetDynaClassDatabaseMetaData常用类Connection Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password);StatementStatement 接口提供了三种执行 SQL 语句的方法:...

常用类

Connection

  Class.forName("com.mysql.cj.jdbc.Driver");
 Connection   conn = DriverManager.getConnection(url, user, password);

Statement

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和execute。使用哪一个方法由 SQL 语句所产生的内容决定。
java连接操作mysql

 Statement mystatement = myConnection.createStatement();
 ResultSet rs = mystatement.executeQuery(sql);

PreparedStatement

PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。

Class.forName(DBConf.JDBC_DRIVER);
            conn = DriverManager.getConnection(DBConf.DB_URL, DBConf.USER, DBConf.PASS);

            String sql = "INSERT INTO user(name, age) VALUES(?,?)";
            pstmt = conn.prepareStatement(sql);
            // insert a user
            pstmt.setString(1, "letian");
            pstmt.setInt(2, 18);
            pstmt.execute();
            // insert another user
            pstmt.setString(1, "letiantian");
            pstmt.setInt(2, 19);
            pstmt.execute();

ResultSet

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);   
ResultSet rset = stmt.executeQuery("select * from yourTableName");   
rset.last();   
int rowCount = rset.getRow(); //获得ResultSet的总行数  
//根据index获取值
while(rs.next()){
			int id = rs.getInt(1);// 获取第一个列的值 编号id
			String bookName = rs.getString(2);// 获取第二个列的值 图书名称 bookName
			String author = rs.getString(3);// 获取第三列的值 图书作者 author
			float price = rs.getFloat(4);// 获取第四列的值 图书价格 price

//根据列名获取值
while(rs.next()){
			int id = rs.getInt("id");// 获取第一个列的值 编号id
			String bookName = rs.getString("bookName"); // 获取第二个列的值 图书名称 bookName
			String author = rs.getString("author");// 获取第三列的值 图书作者 author
			float price = rs.getFloat("price");// 获取第四列的值 图书价格 price
			System.out.println("id="+id+" bookName="+bookName
					            +" author="+author+" price="+price);
			System.out.println("................................................");
		}

RowSetDynaClass

org.apache.commons中的类,用于包装ResultSet

 RowSetDynaClass rowSet = new RowSetDynaClass(rs);
        List<DynaBean> result=rowSet.getRows();
        if (myConnection != null) {
            myConnection.close();
        }

DatabaseMetaData

DatabaseMetaData类是java.sql包中的类,利用它可以获取我们连接到的数据库的结构、存储等很多信息。如:

     1、数据库与用户,数据库标识符以及函数与存储过程。
     2、数据库限制。
     3、数据库支持不支持的功能。
     4、架构、编目、表、列和视图等。

获取

 Connection conn = DriverManager.getConnection(……);
        DatabaseMetaData dbmd = Conn.getMetaData();

获取驱动信息

  dbmd.getDatabaseProductName():用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
        dbmd.getDatabaseProductVersion():获得数据库的版本。返回的字符串。
        dbmd.getDriverVersion():获得驱动程序的版本。返回字符串。
        dbmd.getTypeInfo() :获得当前数据库的类型信息

获取表信息

 dbmd.getTables(String catalog,String schema,String tableName,String[] types),

        这个方法带有四个参数,它们表示的含义如下:
        String catalog:要获得表所在的编目。"“”"意味着没有任何编目,Null表示所有编目。

        String schema:要获得表所在的模式。"“”"意味着没有任何模式,Null表示所有模式。

        String tableName:指出要返回表名与该参数匹配的那些表,

        String types:一个指出返回何种表的数组。

        可能的数组项是:"TABLE"、"VIEW"、"SYSTEM TABLE", "GLOBAL TEMPORARY","LOCAL  TEMPORARY","ALIAS","SYSNONYM"。

获取列信息

        dbmd.getColumns(String catalog,String schama,String tablename,String columnPattern,

ResultSetMetaData

有关 ResultSet 中列的名称和类型的信息。
fieds:所有列信息
getColumnCount(); 返回 ResultSet 中的列数。
getColumnName(int); 返回列序号为 int 的列名。
getColumnLabel(int); 返回此列暗含的标签。
isCurrency(int); 如果此列包含带有货币单位的一个数字,则返回 true。
isReadOnly(int); 如果此列为只读,则返回 true。
isAutoIncrement(int); 如果此列自动递增,则返回 true。这类列通常为键,而且始终是只读的。
getColumnType(int); 返回此列的 SQL 数据类型。这些数据类型包括

本文地址:https://blog.csdn.net/mhpsqyq/article/details/107142474