会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 134300个问题
Python全系列/第一阶段:AI驱动的Python编程/编程基本概念 30556楼

老师,我这个路径不知道为什么报错,因为我以前也是这么放的没有报错,而且这个是相同路径啊,代码在最下面

image.png

#coding=utf-8
"""测试label写法,采用面向对象的方式"""

from tkinter import *
from tkinter import messagebox

class Application(Frame):#定义Application类,继承Frame类
    def __init__(self,master = None):
        super().__init__(master)#调用父类的构造方法
        self.master = master
        self.pack()#当框架中存放了组件时,就需要调用self.pack()进行组件的摆放
        self.creatWidget()

    def creatWidget(self):
        """创建组件"""
        self.label01 = Label(self,text="baizhan哦",width=10,height=2,
                             bg="yellow",fg="blue",font=("楷体",25))
        self.label01.pack()
        self.label02 = Label(self, text="bug好多", borderwidth=5,
                             relief="groove",justify="center")
        self.label02.pack()
        global photo#将photo声明为全局变量,如果是局部变量,本算法执行后图像对象销毁,窗口不显示图像
        photo = PhotoImage(file="1.gif")
        self.label03 = Label(self,image = photo)
        self.label03.pack()

if __name__ == "__main__":#若是本程序使用,非被调用
    root = Tk()#设置主窗口
    root.geometry("400x400+100-100")#设置窗口大小
    root.title("一个经典的gui程序类的测试")
    app = Application(master = root)

    root.mainloop()


Python全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 30560楼

package com.bjsxt.dao.impl;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.beanutils.BeanUtils;

import com.bjsxt.commons.JDBCUtil;
import com.bjsxt.dao.BaseDao;

/*
 * 创建BaseDaoimpl类实现BaseDao的接口,实现接口中的抽象方法
 * 将 对数据库操作的一整套流程 写成模板 以供使用
 */

public class BaseDaoimpl implements BaseDao {
	public  int excuteUpdate(String  sql ,Object[] param) {
		Connection conn =null;
		PreparedStatement ps =null;
		int rows=0;
		try {
			conn=JDBCUtil.getConnection();
			conn.setAutoCommit(false);//设置手动提交事务
			ps=conn.prepareStatement(sql);
			ParameterMetaData pmd = ps.getParameterMetaData();//获取sql语句中需要的参数个数
			
			//通过for循环绑定param数组中的参数到sql语句中
			//因为无法判断需要的参数是什么类型的,就用setObject将参数作为对象
			for(int i=0;i<pmd.getParameterCount();i++) {
				ps.setObject(i+1,param[i] ); //(位置,参数)
			}
			rows=ps.executeUpdate();//启动更新
			conn.commit();//手动开启事务提交
		} catch (Exception e) {
			e.printStackTrace();
			JDBCUtil.rollback(conn);//设置事务回滚
		}finally {
			JDBCUtil.closeResoure(ps, conn);
		}
		return rows;
	}

	/*
	 * 完成通用查询的方法,利用泛型
	 *使用ORM映射:即将            Department d = new Department();
							d.setDepartmentId(rs.getInt("department_id"));
							d.setDepartmentName(rs.getString("department_name"));
							d.setLocationId(rs.getInt("location_id"));
							这一步封装到对象中去
	关键点:需要将Dept类中,模型对象的属性名要和数据库中的列名相同
	 */
	@Override
	//参数分别表示:输入的查询SQL语句、用来保存Dept中属性的数组、类对象(某张表)
	public <T> List<T> find(String sql, Object[] param, Class<T> clazz) {
		Connection conn=null;
		PreparedStatement ps =null;
		ResultSet rs= null;
		List<T> list =new ArrayList<>();
		try {
			conn=JDBCUtil.getConnection();
			ps=conn.prepareStatement(sql);
			//调用特定方法得到sql语句中需要用的参数的个数
			ParameterMetaData pmd=ps.getParameterMetaData();
			//绑定参数
			for(int i=0;i<pmd.getParameterCount();i++) {
				ps.setObject(i+1, param[i]);
			}
			//处理结果集
			rs=ps.executeQuery();
			//获取结果集的信息,rs.getMetaData()返回是当前操作数据库的属性个数,即列数
			ResultSetMetaData rsmd =rs.getMetaData();
			while(rs.next()) {
				//完成ORM处理,通过反射获取类模板,并且实例化
				//因为具体用的是哪个类模板并不知道,所以用泛型T表示
				T bean = clazz.newInstance();//这句话相当于Department dept =new Department();
				for(int i=0;i<rsmd.getColumnCount();i++) {
						//利用Apache工具包,完成获取clazz对象中的属性
						//先获取数据库列名
						String columnName =rsmd.getColumnName(i+1);//通过列的位置获取列名
						Object value = rs.getObject(columnName);
						//通过Apache工具包中的BeanUtil工具类,将值封装到对象中
						BeanUtils.setProperty(bean, columnName, value);
					list.add(bean);//将获取的对象保存到集合中
				}
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtil.closeResoure(ps, conn);
			JDBCUtil.closeResultSet(rs);
		}
		return list;
	}

}

image.png

老师第一个红色圈中的ParameterMetaData这个类是怎么来的,它就是用来保存ps.getParameterMetaData获取的参数的个数的嘛,但是参数个数是整型,为什么不能用 int numbuer =ps.getParameterMetaData();表示呢


第二个圈中ResultSetMetaData也是一个特有的类嘛?同样的rsmd是用来保存属性个数的话为什么不可以用整型来保存?


黄色框中的rsmd.getColumnName(i+1)这方法,既然rsmd是参数个数的话,它怎么可以用 getColumnName(i+1)

Object类型的value表示的是什么?是获取列名所对应的Dept对象嘛?


JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术(旧) 30562楼
JAVA 全系列/第六阶段:项目管理与SSM框架/SpringMVC 30564楼
WEB前端全系列/第五阶段:前后端交互/网络请求AJAX 30565楼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery.min.1.12.4.js"></script>
</head>
<body>
<span>用户名:</span><input type="text" class="username"><br>
<span>密码:</span><input type="text" class="password"><br>
<button>get无参请求</button>
<button>get有参请求</button>
<button>post请求</button>
<script>
    var $usernameInput=$('.username');
    var $passwordInput=$('.password');
    var $btns=$('button');
    $btns.eq(0).click(function () {
        $.ajax({
            //请求方式为get
            type:'get',
            //指明请求要发送到的php后台地址
            url:'ajax.php',
            //交互的数据格式为json
            dataType:'json',
            //当后台返回数据时,本函数自动执行,用来获取后台返回的具体数据内容
            success:function (res) {
                console.log(res);
                console.log(res.info);
            }
        })
    })

    $btns.eq(1).click(function () {
        $.ajax({
            //请求方式位get
            type:'get',
            //指明请求要发送到的php后台
            url:'ajax.php?username='+$usernameInput.val()+'$password='+$passwordInput.val(),
            //交互的数据格式为json
            dateType:'json',
            //当后台返回数据时,本函数自动执行,用来获取后台返回的具体数据内容。
            success:function (res) {
                console.log(res);
                console.log(res.info);
            }
        });
    })
</script>
</body>
</html>
<?php
  //get无参请求
  //php中构建数组结构
  //$successArr=array('msg'=>'ok','info'=>'my tel is 1794309196xxx');
  //通过echo和json——encode()方法将这个数组转换成json,并返回到前端
  //echo json_encode($successArr);
  //get无参请求
    //php中构建数组结构
    $successArr=array('msg'=>'ok','info'=>$_GET);
    //通过echo和json——encode()方法将这个数组转换成json,并返回到前端
    echo json_encode($successArr);
?>

image.png

为什么是未知啊,哪里出错了

WEB前端全系列/第五阶段:前后端交互/PHP、数据库编程与设计 30567楼
Python全系列/第二阶段:Python 深入与提高/文件处理 30569楼
JAVA 全系列/第一阶段:AI驱动的JAVA编程/IDEA的使用和第一个java项目 30570楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637