java连接操作mysql

文章目录

  • 常用类
    • Connection
    • Statement
      • PreparedStatement
    • ResultSet
      • RowSetDynaClass
    • DatabaseMetaData
  • ResultSetMetaData

常用类

Connection

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

Statement

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

 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 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 数据类型。这些数据类型包括

你可能感兴趣的:(java)