五月二十七日jdbc,算法以及数据库

1.ResultSetMetaData接口主要获得结果集。例如:结果集字段数量和名字
通过ResultSet的getMetaData()方法获得对应对象

复制代码
public class app17_20 {
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/ku";
    private static String user = "root";
    private static String password = "root";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try{
            Class.forName(driver);
            conn = DriverManager.getConnection(url,user,password);
            String sql = "SELECT * FROM student WHERE dept = '外语';";
             stmt = conn.createStatement();
             rs = stmt.executeQuery(sql);
            ResultSetMetaData rsMateData = rs.getMetaData();
            System.out.println("总共有:"+rsMateData.getColumnCount()+"列");
            for (int i = 1; i <=rsMateData.getColumnCount() ; i++) {
                System.out.println("列"+i+":"+rsMateData.getColumnTypeName(i)+","+
                rsMateData.getColumnTypeName(i)+"("+rsMateData.getColumnDisplaySize(i)+")");
            }
        }
        catch (Exception e)
        {
           e.printStackTrace();
        }
        finally {
            try{
                if(rs!=null) rs.close();
                if (stmt!=null) stmt.close();
                if (conn!=null) conn.close();
            }catch(Exception e)
            {e.printStackTrace();}
        }
    }
}
复制代码

 


2.获得结果集中字段名,字段名类型以及最大size
rsMateData.getColumnName();
rsMateData.getColumnTypeName();
rsMateData.getColumnDisplaySize();
3.实务操作:
事务是保证数据库的完整性和一致性,由SQL语句组成
事务就是为了确保程序中的多条SQL语句出问题时,设置的一种可以回滚到原来地方的机制

 

复制代码
public class app17_21 {
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/k";
    private static String user = "root";
    private static String password = "root";
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String insertSql1 = "INSERT INTO Student(sNo,sName,sex,age,dept) VALUE('1','张三','男',15,'计算机');";
        String insertSql2 = "INSERT INTO Student(sNo,sName,sex,age,dept) VALUE('2','李四','女',16,'外语')";
        String insertSql3 = "INSERT INTO Student(sNo,sName,sex,age,dept) VALUE('3','王五','人妖',18,'金融')";
        try{
            conn = DriverManager.getConnection(url,user,password);//定义驱动对象
            stmt = conn.createStatement();//SQL对象
            boolean autoCommit = conn.getAutoCommit();//返回是否自动提交模式
            conn.setAutoCommit(false);//取消自动提交
            int i1 = stmt.executeUpdate(insertSql1);
            int i2 = stmt.executeUpdate(insertSql2);
            int i3 = stmt.executeUpdate(insertSql3);
            conn.commit();//执行提交操作
            conn.setAutoCommit(autoCommit);//还原自动提交操作
            System.out.println(i1+" "+i2+" "+i3);
        }
        catch (Exception e) {
            e.printStackTrace();
        if(conn!=null){
            try{
                conn.rollback();//执行回滚
            }
            catch (SQLException e1){
                e1.printStackTrace();
            }
        }
        }
        finally {
            try{
                if (stmt!=null) stmt.close();
                if (rs!=null) rs.close();
            }
            catch (
                    Exception e
                    ){
                e.printStackTrace();
            }
        }
    }
}
复制代码

第二天:
&位运算与:1&1=1, 1&0=0, 0&0=0,。两个都为1才是1
|位运算或:1|1=1 , 0|1=1, 1|0=1, 0|0 = 0。只要有一个为1就是1
^位运算或与:110^001 = 111,不同为1
>>位右移:将二进制数右移动一位 x = 0101 x>>1;x=0010;
<<位左移动:将二进制数做移动一位 x = 0101 x<<1;x=1010
3.汉明距离,求两个数的二进制数的不同个数:
思考:二进制怎么跟十进制联系在一起
怎么计算不同的位置是否一样
第一步:利用异或求出两个十进制数在二进制时的异或结果
第二步:判断异或结果是否为0.二进制数最大1从31开始,位右移32次
第三步:将异或结果与1取按位与,两个都为1即,异或有不同
第四步:每右移一次,总不同数ret加一次
class solution{
public int hanming(int x,int y){
int s =x^y,ret = 0;
while(s!=0){
for(int i = 31,i>=0;i--){
ret+=s&1;
s>>=1}每次右移动一次
}
}
}
4.数据库:查找重复电子邮箱
group by 如何用 :
having 如何用:
第一种:select email from Person group by Email having count(count)>1;
distinct 如何用:
第二种:select distinct a.Email from Person a,Person b
where a.Email = b.Email and a.id!=b.id;

总结:今天了解字段名相关方法的返回,以及事务流程和作用

算法中,深刻的认识到位运算

数据库中,如何查找重复邮件值得琢磨,里面的group by 与having之前学过都忘了,还有distinct

明天,好好看下,补上,今天的不懂

 

posted @   求知律己  阅读(55)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示