mysql查询java
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.ResultSetMetaData;
importjava.sql.Statement;
importjava.util.Hashtable;
publicclassGetDBFiled{
publicstaticvoidconn(){
Stringdriver="com.mysql.jdbc.Driver";
Stringurl="jdbc:mysql://localhost:3306/databaseName";
Stringuser="root";
Stringpassword="密码";
try{
Class.forName(driver);
Connectionconn=DriverManager.getConnection(url,user,password);
if(!conn.isClosed()){
Stringsql="select*frompic";
System.out.println("!");
Statementstatement=conn.createStatement();
ResultSetrs=statement.executeQuery(sql);
if(rs.next()){
//得到ResultSetMetaData
ResultSetMetaDatarsmd=rs.getMetaData();
System.out.println(rsmd.getColumnCount());
for(inti=1;i<=rsmd.getColumnCount();i++){
Hashtablehst=newHashtable();
//把字段名放入Name
Stringname=String.valueOf(rsmd.getColumnLabel(i));
hst.put("Name",name);
//把字段类型放入Type
Stringtype=String.valueOf(rsmd.getColumnType(i));
hst.put("Type",type);
System.out.println(hst.get("Name")+""+hst.get("Type"));
}
}
}
}catch(Exceptione){
System.out.println("出现异常");
}
}
}
❷ java语言 mysql数据库 查询方法
楼主,其实写法清晰一点很容易理解
第1个方法,返回的是List<List<Object>>的数据,即返回一个二维表格
第2个方法,返回的是List<Object>的数据,即返回一个
❸ 求一个java mysql 查询思路
其实我也没有啥好办法,我甚至推荐你使用楼上说的方法,直接select * 将数据全部查出后,在service中用java处理数据更加方便。
如果要强行使用sql查出来,我这里写了这么一段:
首先因为是同一张表,根据不同条件将结果拼接在一起,我能想到的就是用left join,我按照不同条件将数据分成如下几段:
a段:姓名段,作为left join的主表,只有姓名;
b段:吃了早餐段;
c段:没吃早餐段;
d段:吃了晚餐段;
e段:没吃晚餐段;
f段:吃了饭段;
g段:没吃饭段。
除了a段以外,其他段都是根据自身条件
SELECT
name,
count(*) count,
sum(weight) sum,
然后依次左连接将所有段通过姓名连接到一起,最终组成的sql语句如下:
SELECT
a.name 姓名,
ifnull(b.count, 0) 吃了早餐的次数,
ifnull(b.sum, 0) 吃了早餐的重量,
ifnull(c.count, 0) 没吃早餐的次数,
ifnull(c.sum, 0) 没吃早餐的重量,
ifnull(d.count, 0) 吃了晚餐的次数,
ifnull(d.sum, 0) 吃了晚餐的重量,
ifnull(e.count, 0) 没吃晚餐的次数,
ifnull(e.sum, 0) 没吃晚餐的重量,
ifnull(f.count, 0) 吃了饭的次数,
ifnull(f.sum, 0) 吃了饭的重量,
ifnull(g.count, 0) 没吃饭的次数,
ifnull(g.sum, 0) 没吃饭的重量
FROM
(SELECT DISTINCT name
FROM T) a LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 0 AND status = 0
GROUP BY name) b ON a.name = b.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 0 AND status = 1
GROUP BY name) c ON a.name = c.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 1 AND status = 0
GROUP BY name) d ON a.name = d.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE type = 1 AND status = 1
GROUP BY name) e ON a.name = e.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE status = 0
GROUP BY name) f ON a.name = f.name
LEFT JOIN
(SELECT
name,
count(*) count,
sum(weight) sum
FROM T
WHERE status = 1
GROUP BY name) g ON a.name = g.name
T表结构为:
❹ mysql进行分库之后,java里怎么进行查询
根据业务逻辑,自己定一个规则去选择不同的库存储。比方如计算机类书籍存储A库中的书籍表。经济类的书籍存储B。最终构造一个KEY(书籍类型)- value(库标识)。查询时根据库标识取出对应的数据源进行查询。
❺ 有关用java连接MySQL写查询语句的问题
第一种方式:HQL(Hibernate Query Languge,Hibernate 查询语言)查询
是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式
语法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……]
(1).没使用Spring框架的写法:
使用HQL需要四步
得到Session、编写HQL语句、创建Query对象(Query接口是HQL 查询接口。它提供了各种的查询功能)、执行查询,得到结果
sessionFactory =
new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
String hql = “from Street”;
Query query = session.createQuery(hql);
List<Street> list = query.list();
(2).使用Spring框架的写法:
String queryString = "select form entity ....";
List list=getHibernateTemplate().find(queryString);
第二种方式:Criteria 查询
Criteria 查询采用面向对象方式封装查询条件,又称为对象查询;
就是对SQL 语句进行封装,采用对象的方式来组合各种查询条件
由Hibernate 自动产生SQL 查询语句
❻ java线程中使用mysql连接查询数据库
不建议这样做,一般不符合开发规范,如果这样的话,你想想在业务量多的情况下,多个线程如果不控制,数据库连接会将数据库服务器爆掉的,会影响业务的
常规做法:数据库连接池(rid了解一下),据某些统计哈,真正用来做查询的资源不超过整个查询数据库的生命周期的30%,大部分时间都用开创建连接关闭连接等操作,如果这个时候建立数据库连接池的话,可以有效的将这部分时间释放掉
❼ 关于java查询mysql数据库的问题。
应该是编码问题,中英文编码转换的问题。
MySQL中默认字符集的设置有四级:服务器级,数据库级,表级 。最终是字段级 的字符集设置。注意前三种均为默认设置,并不代码你的字段最终会使用这个字符集设置。所以我们建议要用show create table table ; 或show full fields from tableName; 来检查当前表中字段的字符集设置。
MySQL中关于连接环境的字符集设置有 Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。这样MySQL就会做必要的翻译,一旦这些参数有误,自然会导致字符串在转输过程中的转换错误。基本上99%的乱码由些造成。
我在用hibernate做,编码也改了,可是还有问题。最后在hibernate.cfg.xml中配置<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/online?characterEncoding=UTF-8</property>就解决了
❽ 用java查询mysql数据库问题
MYSQL中没有Oracle类似的CONNECT BY 语句,如果要实现树状查询的话,如果是5.0以上版本可以使用存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS `sx_finance`.`pro_channel_class`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_channel_class`(in parentid int)
begin
declare level smallint default 0;
declare cnt int default 0;
create temporary table tt(class_id int,class_name varchar(20),PARENT_ID int,level smallint,sort varchar(1000));
create temporary table tt2(class_id int,class_name varchar(20),PARENT_ID int,level smallint,sort varchar(1000));
insert into tt select class_id,class_name,PARENT_ID,level,cast(class_id as char) from CHANNEL_CLASS where PARENT_ID=parentid;
select row_count() into cnt;
insert into tt2 select * from tt;
while cnt>0 do
set level=level+1;
truncate table tt;
insert into tt select a.class_id,a.class_name, a.PARENT_ID,level,concat(b.sort,a.class_id) from CHANNEL_CLASS a,tt2 b where a.PARENT_ID=b.class_id and b.level=level-1;
select row_count() into cnt;
insert into tt2 select * from tt;
end while;
select class_id, concat(space(a.level*2),'|---',a.class_name) class_name from tt2 a order by sort;
drop table tt;
drop table tt2;
end$$
DELIMITER ;
要不就只能用JAVA程序实现
❾ 说明在java程序中连接并查询Mysql的主要命令和步骤
java程序连接MySql的主流方法是通过JDBC,你需要去MySql官网下一个他们的驱动包,然后以外部包的形式导入到项目中
建立连接
进行查询
Class.forName("com.mysql.jdbc.Driver");
//DatabaseName是数据库名
Connectionct=DriverManager.getConnection("jdbc:mysql://localhost:3306/DatabaseName",username,password);
//此时就可以使用这个连接进行增删改查了
我这里贴上我以前写的一个demo的部分查询代码
PreparedStatmentps=ct.prepareStatement("select*fromstudentswhereNumber=?");//sql语句结尾不需要;
//?可以为任何类型在函数中声明类似ps.set类型(第几个,数据);
//sql语句可以为任何种类,第一个是从1开始
ps.setInt(1,2);
ResultSetrs=ps.executeQuery();
while(rs.next()){
intNumber=rs.getInt(1);//第一个字段,顺序与sql语句查询的顺序对应,若为*则按照表中字段顺序获取
TimeTime=rs.getTime(3);
StringName=rs.getString(2);
StringSex=rs.getString(4);
System.out.println("编号:"+Number+",姓名:"+Name+",出生时间:"+Time+",性别:"+Sex);
}
项目最后需要关闭连接
ct.close();