微笑精灵 2022-06-08 13:32 采纳率: 93.8%
浏览 62
已结题

怎么直接执行sql?

我现在启动测试类想要跑个功能,可是有一个小问题,我需要执行一句sql来查数据,但是这个sql在原本的代码里是没有的。
我又不想去新建一个xml文件手写,有什么办法直接让代码执行sql得到结果么?
sql就是一个简单的查询。
mybatis,spring,java

  • 写回答

5条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-06-08 17:47
    关注

    给你个测试类直接执行

    
    import java.sql.*;
    import java.sql.DriverManager;
    import com.mysql.jdbc.Connection;   //需要这个jar包 mysql-connector-java-5.1.49.jar
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.util.HashMap;
    
    public class Test {
    
        public void action() throws Throwable {
    
            try {
                int ColumnCount;
                //int RowCount;
                String driver = "com.mysql.jdbc.Driver";
                String url = "jdbc:mysql://127.0.0.1:3306/test"; //换成要连接的数据库信息
                String user = "root";
                String password = "password";
                Class.forName ( driver );
                Connection conn = (Connection) DriverManager.getConnection ( url, user, password );
                if (!conn.isClosed ()) {
                    System.out.println ( "数据库连接成功:" );
                    String sqls = "SELECT * FROM test "; //sql
                    PreparedStatement ps = conn.prepareStatement ( sqls );
                    ResultSet rs = ps.executeQuery ();
                    List list = new ArrayList<String> ();
    
                    ResultSetMetaData rsmd = rs.getMetaData ();
                    while (rs.next ()) {
                        ColumnCount = rsmd.getColumnCount ();
                        Map<String,Object> rowData = new HashMap<String,Object>();
                        for (int i = 1; i <= ColumnCount; i++) {
                            rowData.put(rsmd.getColumnName(i),rs.getObject(i));
                        }
                        //将ResultSet结果集写入list
                        list.add(rowData);
                    }
                    System.out.println ( list );
                    ps.close ();
                    conn.close ();
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace ();
            } catch (SQLException e) {
                e.printStackTrace ();
            }
        }
        public static void main(String[] args)throws Throwable{
            Test test =new Test ();
            test.action();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题