老师检查一下

老师检查一下

问题描述:1.修改的sql语句能一次改两个属性吗,例如,但是报错了,老师能示范一下吗

String sql = "update news set (title =?,content=?) where id=?";

问题描述:2.输入id后会单独显示一行你输入的id的新闻,不会单独显示出来

相关截图:

https://img1.sycdn.imooc.com//climg/619c4f4f0996bcf413740653.jpg

相关代码:

package chapter10_2.command;

import java.util.Scanner;

public class newsTest {
    public static void main(String[] args) {
        boolean flag = true;
        Scanner scanner = new Scanner(System.in);
        Command command = null;
        do {
            System.out.println("欢迎来到新闻管理系统");
            System.out.println("=======================");
            System.out.println("           1  添加新闻                 ");
            System.out.println("           2  查看新闻                 ");
            System.out.println("           3  编辑新闻                 ");
            System.out.println("           4  删除新闻                 ");
            System.out.println("           5  退出系统                 ");
            System.out.println("请输入1-5之间的数字进行操作");
            int sc = scanner.nextInt();
            if (sc > 5 || sc < 1) {
                System.out.println("输入错误,请用户重新输入:");
            } else {
                switch (sc) {
                    case 1:
                        command = new InsertNewsCommand();
                        command.execute();
                        break;
                    case 2:
                        command = new QueryNewsCommand();
                        command.execute();
                        break;
                    case 3:
                        command = new EditNewsCommand();
                        command.execute();
                        break;
                    case 4:
                        command = new DeleteNewsCommand();
                        command.execute();
                        break;
                    case 5:
                        System.out.println("退出成功!");
                        flag = false;
                        //System.exit(0);
                        break;
                }
            }
        } while (flag);
    }
}

package chapter10_2.command;

import chapter10_2.enity.news;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Properties;
import java.util.Scanner;

public class EditNewsCommand implements Command{
    public void query(){
        Connection conn = null;

        Properties properties = new Properties();
        String propertyFlie = EditNewsCommand.class.getResource("/druid-config.properties").getPath();
            try {
                propertyFlie = URLDecoder.decode(propertyFlie,"UTF-8");
                properties.load(new FileInputStream(propertyFlie));
                DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

                QueryRunner qr = new QueryRunner(dataSource);
                List<news> list = qr.query("select * from news ",
                        new BeanListHandler<>(news.class));
                for(news n : list){
                    System.out.println(n.toString());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

    }


    @Override
    public void execute() {
        Connection conn = null;
        query();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要修改的新闻id");
        Integer id  = scanner.nextInt();
        System.out.println("请输入要修改的新闻标题");
        String title = scanner.next();
        System.out.println("请输入要修改的新闻内容");
        String content = scanner.next();


        Properties properties = new Properties();
        String propertyFlie = EditNewsCommand.class.getResource("/druid-config.properties").getPath();
        try {
            propertyFlie = URLDecoder.decode(propertyFlie,"UTF-8");
            properties.load(new FileInputStream(propertyFlie));

            DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
            conn = dataSource.getConnection();
            conn.setAutoCommit(false);

           String sql = "update news set title =? where id=?";
           String sql1 = "update news set content=? where id = ?";
            QueryRunner qr = new QueryRunner();
            qr.update(conn,sql,new Object[]{title,id});
            qr.update(conn,sql1,new Object[]{content,id});
            conn.commit();
            System.out.println("修改成功!");
        } catch (Exception e) {
            e.printStackTrace();
            try {
                if(conn != null && !conn.isClosed()){
                    conn.rollback();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-11-23 13:55:58

同学你好

1、是可以的,例如:

System.out.println("请输入新闻标题:");
String title = input.next();
System.out.println("请输入新闻内容:");
String content = input.next();
sql = "update news set title= ?, content= ? where id = ?";
int update = qr.update(conn, sql, new Object[]{title, content, id});
if (update==0){
    System.out.println("id不存在修改失败");
}else{
    System.out.println("修改成功!");
}

2、很抱歉,老师没能很好理解同学的问题“输入id后会单独显示一行你输入的id的新闻,不会单独显示出来”,建议再具体描述下问题。

3、建议同学上传代码是选中对应的代码语言,避免上传后代码格式混乱。

https://img1.sycdn.imooc.com//climg/619c824109f8e42401080170.jpg

https://img1.sycdn.imooc.com//climg/619c826309e7def907810342.jpg

祝学习愉快

  • 提问者 慕小成 #1

    老师,意思就是他选择id之后,会单独显示一行选的id号的新闻,,就是他选择三号功能,然后系统就把所有新闻先显示出来,然后在选择八号id,然后系统再会显示一行八号id新闻出来,就是这个显示八号id新闻出来怎么显示。(上面图片我画了圈)

    2021-11-24 08:18:53
  • 好帮手慕小小 回复 提问者 慕小成 #2

    同学你好

    1、在选择菜单3编辑新闻后显示所有新闻信息:

    可在选择3后调用查看新闻的方法用于展示全部新闻列表信息,例如:

    https://img1.sycdn.imooc.com//climg/619da41209428d6603040047.jpg

    2、编辑新闻时,输入id后显示对应id的新闻信息:

    在编辑新闻的方法中,输入id后,进行根据id查询新闻列表的操作,再将查询结果显示在控制台上。参考代码如下:

    https://img1.sycdn.imooc.com//climg/619da50a0983a46306960220.jpg

    祝学习愉快~

    2021-11-24 10:36:41
  • 提问者 慕小成 回复 好帮手慕小小 #3

    编辑新闻类中,我分了两个方法一个query用来访问全部新闻列表,一个execute用来编辑,就是在query方法中获取不到id号,然后我试了一下创建两个QueryRunner对象,一个用来编辑,一个用来查询id为控制台输入编号的新闻,也显示不出来,https://img1.sycdn.imooc.com//climg/619defea09a326fb19201039.jpg


    package chapter10_2.command;
    
    import chapter10_2.enity.news;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    
    import javax.management.Query;
    import javax.sql.DataSource;
    import java.io.FileInputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.Properties;
    import java.util.Scanner;
    
    public class EditNewsCommand implements Command{
        public void query(){
            Connection conn = null;
    
            Properties properties = new Properties();
            String propertyFlie = EditNewsCommand.class.getResource("/druid-config.properties").getPath();
                try {
                    propertyFlie = URLDecoder.decode(propertyFlie,"UTF-8");
                    properties.load(new FileInputStream(propertyFlie));
                    DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
    
                    QueryRunner qr = new QueryRunner(dataSource);
                    List<news> list = qr.query("select * from news ",
                            new BeanListHandler<>(news.class));
                    for(news n : list){
                        System.out.println(n.toString());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
        }
    
    
        @Override
        public void execute() {
            Connection conn = null;
            query();
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入要修改的新闻id");
            Integer id  = scanner.nextInt();
            System.out.println("请输入要修改的新闻标题");
            String title = scanner.next();
            System.out.println("请输入要修改的新闻内容");
            String content = scanner.next();
    
    
            Properties properties = new Properties();
            String propertyFlie = EditNewsCommand.class.getResource("/druid-config.properties").getPath();
            try {
                propertyFlie = URLDecoder.decode(propertyFlie,"UTF-8");
                properties.load(new FileInputStream(propertyFlie));
    
                DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
                conn = dataSource.getConnection();
                conn.setAutoCommit(false);
    
               String sql = "update news set title =? where id=?";
               String sql1 = "update news set content=? where id = ?";
                QueryRunner qr = new QueryRunner();
                QueryRunner qr1 = new QueryRunner(dataSource);
                List<news> list = qr1.query("select * from news where id=?",
                        new BeanListHandler<>(news.class),
                        new Object[]{id});
                for(news n : list){
                    System.out.println(n.toString());
                }
                qr.update(conn,sql,new Object[]{title,id});
                qr.update(conn,sql1,new Object[]{content,id});
                conn.commit();
                System.out.println("修改成功!");
            } catch (Exception e) {
                e.printStackTrace();
                try {
                    if(conn != null && !conn.isClosed()){
                        conn.rollback();
                    }
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
    
        }
    }


    2021-11-24 16:00:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师