java数据库类
1. java镎崭綔鏁版嵁搴撶殑鏂瑰纺链夊摢浜
JDBC鏄痡ava鏁版嵁搴撹繛鎺ユ妧链镄勭亩绉,瀹冩彁渚涗简杩炴帴钖勭嶆暟鎹搴撶殑鑳藉姏,杩欎究浣跨▼搴忕殑鍙缁存姢镐у拰鍙镓╁𪾢镐уぇ澶х殑鎻愰珮浜.JDBC杩炴帴鏁版嵁搴揿父瑙佺殑椹卞姩鏂瑰纺链変袱绉,涓绉嶆槸jdbc-odbc鍗虫ˉ杩炲彟澶栦竴绉嶆槸绾痡ava椹卞姩.涓鑸鍦ㄥ仛java寮鍙戠殑镞跺欑敤绗浜岀.so鍓崭竴绉嶆垜灏变笉璇翠简,绾痡ava椹卞姩鏂瑰纺杩炴帴姝ラゅ备笅:
1.鍏堟妸涓涓猨dbc镄刯ar鍖呭煎叆鍒伴”鐩(鐢∕yEclipse寮鍙)镄刲ib涓.
2.浠g爜濡备笅:
[c-sharp]view plain
importjava.sql.*;
/**
*杩炴帴鏁版嵁搴揿府锷╃被
*@authorAdministrator
*
*/
publicclassBaseDao{
="com.microsoft.sqlserver.jdbc.SQLServerDriver";
privatestaticfinalStringURL="jdbc:sqlserver://localhost:1433;DatabaseName=LibraryManageSystem";
="sa";
="sa";
/**
*杩炴帴鏁版嵁搴
*@return鏁版嵁搴撹繛鎺ュ硅薄
*@throwsClassNotFoundException
*@throwsSQLException
*/
publicConnectiongetConn()throwsClassNotFoundException,SQLException{
Class.forName(DRIVER);
Connectionconn=DriverManager.getConnection(URL,USERNAME,PASSWORD);
returnconn;
}
/**
*閲婃斁璧勬簮
*@paramconn
*@parampstmt
*@paramrs
*@throwsSQLException
*/
publicvoidcloseAll(Connectionconn,PreparedStatementpstmt,ResultSetrs)throwsSQLException{
if(rs!=null){
rs.close();
}
if(pstmt!=null){
pstmt.close();
}
if(conn!=null){
conn.close();
}
}
/**
*镓ц孲QL璇鍙ワ纴鍙浠ヨ繘琛屽炪佸垹銆佹敼镄勬搷浣
*@paramsql
*@return褰卞搷𨱒℃暟
*@throwsClassNotFoundException
*@throwsSQLException
*/
publicintexecuteSQL(Stringsql)throwsClassNotFoundException,SQLException{
Connectionconn=this.getConn();
PreparedStatementpstmt=conn.prepareStatement(sql);
intnumber=pstmt.executeUpdate();
this.closeAll(conn,pstmt,null);
returnnumber;
}
}
<Resourcename="jdbc/book"auth="Container"type="javax.sql.DataSource"
maxActive="100"maxIdle="20"maxWait="100"username="sa"password="sa"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;dataBaseName=book"
/>鍦╟onfig.xml鏂囦欢涓锷犲叆Resource镙囩,铹跺悗瀵规暟鎹搴扑俊鎭杩涜岄厤缃,褰撶劧杩欎釜鏁版嵁搴撴寚镄勪篃鏄痵qlserver链夌枒闂鍙浠qq757966892镵旂郴
packageweb.login.;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.sql.DataSource;
publicclassBaseDao{
protectedConnectionconn;
protectedPreparedStatementps;
protectedResultSetrs;
protectedStringsql;
publicConnectiongetConn(){
try{
Contextcontext=newInitialContext();
DataSourceds=(DataSource)context.lookup("java:comp/env/jdbc/user");
returnds.getConnection();
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
publicvoidcloseAll(Connectionconn,PreparedStatementps,ResultSetrs){
try{
if(rs!=null){
rs.close();
rs=null;
}
if(ps!=null){
ps.close();
ps=null;
}
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
- 涔嫔悗渚垮彲浠ュ缓绔嬩笟锷$被浠庤屽规暟鎹搴撹繘琛屾搷浣.
浠庝唬镰佺煡阆挞栧厛钖jdbc椹卞姩绫昏呰浇java铏氭嫙链轰腑,鍗矫lass.forName(DRIVER);鍏舵″姞杞介┍锷ㄥ苟寤虹珛浜庢暟鎹搴撶殑杩炴帴Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);;铹跺悗鍙戦丼QL璇鍙ュ苟镄勫埌缁撴灉闆.涔嫔悗澶勭悊缁撴灉,链钖庤佸叧闂鏁版嵁搴撶殑杩炴帴,閲婃斁璧勬簮.褰撶劧鎴戣寸殑杩欐牱杩炴帴鏁版嵁搴撶殑鏂瑰纺浣跨敤镄勮蒋浠舵槸sql鍜孧yEclipse.
浣跨敤閰岖疆鏂囦欢𨱒ヨ繛鎺ユ暟鎹搴,褰撶劧杩欐牱镄勮繛鎺ラ渶瑕佽繘琛屼竴浜涢厤缃.鍏跺疄杩欐牱镄勮繛鎺ョ敤涓扑笟链璇𨱒ヨ村氨鏄杩炴帴姹,杩炴帴姹犳槸璐熻矗鍒嗛厤绠$悊鍜岄喷鏀炬暟鎹搴撹繛鎺.瀹冨厑璁哥敤鐢ㄧ▼搴忛吨澶崭娇鐢ㄤ竴涓鐜版湁镄勬暟鎹搴撹繛鎺ヤ笉鍐嶉吨澶嶅缓绔嬭繛鎺.閲婃斁绌洪棽镞堕棿瓒呰繃链澶х┖闂叉椂闂寸殑鏁版嵁搴撹繛鎺ヤ互阆垮厤锲犱负娌℃湁閲婃斁鏁版嵁搴撹屽紩璧风殑鏁版嵁搴挞仐婕.
杩炴帴姹犵殑鍒涘缓鍒嗕负浠ヤ笅鍑犱釜姝ラ:1.閰岖疆context.xml鏂囦欢 杩欎釜鏂囦欢鏄链嶅姟鍣(鎸噒omcat)镄勪竴涓猚onf鏂囦欢澶逛腑,𨰾疯礉鍑烘潵鏀惧叆椤圭洰镄刲ib鏂囦欢澶逛腑,鍏蜂綋閰岖疆濡备笅:
[c-sharp]view plain
涔嫔悗鎶婃暟鎹搴撶殑椹卞姩鍖,杩欓噷鎸囩殑鏄痵ql2005镄勫寘鏀惧叆链嶅姟鍣ㄧ殑lib涓,杩欐牱浠ュ悗濡傛灉鍦ㄤ綘镊宸辩殑链哄瓙涓婇兘涓岖敤鍦ㄩ吨鏂板煎叆杩欎釜鍖呬简.
铹跺悗灏辨槸浠崄yEclipse涓鍙栧缑杩欐牱镄勮繛鎺ヤ粠钥屽规暟鎹搴撹繘琛屼竴浜涙搷浣滃叿浣扑唬镰佸备笅:
[c-sharp]view plain
2. Java中每个数据库的优势是什么
提及数据库类型,人们先想到的是SQL,不过随着大规模数据集合多重数据种类带来的挑战,NoSQL应运而生。专业人士分析,随着云计算、物联网以及大数据的进一步发展,NewSQL将成为未来数据库的主角。
SQL
SQL是Structured Query Language(结构化查询语言)的缩写,是传统的关系型数据库、数据库领域主流模型,经典应用在金融和电信行业,确保数据库的数据不会出错和丢失。而SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
NoSQL
NoSQL泛指非关系型的数据库,它的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。NoSQL的强项是特别适合处理大量分布式数据,与传统的关系型数据库相比,NoSQL数据库为软件开发人员及其他用户提供了更快的速度和更高的灵活性。目前在市场上有超过24个开源和商业NoSQL数据库。
NewSQL
NewSQL是指一类新式的关系型数据库系统,针对OLTP(读-写)工作负载,追求提供和NoSQL系统相同的扩展性能,且仍然保持ACID和SQL等特性。对企业而言,使用NewSQL不仅免去传统数据仓库的ETL过程,降低存储成本的同时极大的缩短数据分析的延迟,使得实时分析决策系统成为可能。
MySQL
优点:
体积小、速度快、总体拥有成本低,开源;
支持多种操作系统;
是开源数据库,提供的接口支持多种语言连接操作 ;
SqlServer
优点:
易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等;
Oracle
优点:
开放性: Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持。
可伸缩性,并行性:oracle 并行服务器通过使组结点共享同簇工作来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能满足需要用户把数据库移UNIXOracle并行服务器对各种UNIX平台集群机制都有着相当高集成度。
以上我的回答希望对你有所帮助
3. java,为什么数据库类型nchar(10)和Stirng结果永远为false, 无乱码现象,换成varchar类型比较没问题
nchar(10)字符串长度不够10时自动填充空格
譬如:存入字符串"123"
最终变成"123"
这时候拿出来和"123"对比一定是false
"123".equals("123")=>false
而varchar 长度不够 不会填充空格,存进去是什么,取出来就是什么
char 与varchar的区别:
char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。
若有疑问,再追问
4. java 操作数据库时一个属性是DateTime类型的写入数据库时可弄成Varchar么
通常上来说,数据库和实体类间的字段建立联系,尽量让实体的属性类型与数据字段类型一一对应,比如你使用的是oracle数据库,那么表的主键如果为NUMBER,那么实体对应主键属性java类型就定义为Long或Integer(依字段长度决定),如果数据库表字段为VARCHAR,实体类对应属性就应该是String,如果数据库字段为小数,则定义为Double,属性建议使用包装类型,不用基本类型。至于时间,数据库一般由Date,DateTime,以及timestamp表示,对应于java实体类,一般用Date封装即可,对时间进精度要求高的话,就用TimeStamp封装。
当然,你说的情况是可以的,也就是说,使用java的String类型,理论上可以封装所有的数据库字段类型,你可以把任何数据库的有效字段都封装为String,因为java中的所有数据类型,都有toString()方法,可以以字符串形式展示任何数据类型,还可以通过重写对象的toString()方式达到自定义显示数据的方式,可以说很方便。但是时间类型一旦用字符串表示,你便失去了直接调用时间类型特有的一些有用的方法,比如获取时分秒,比较时间大小等等。而是需要手动再转化为时间对象再进行操作,这无疑又多了一个步骤。因此,除非是比较特殊的情况,比如,单纯的进行数据导出,不做特殊处理,你可以建一个属性全为String的实体类,来封装数据库查询的数据,然后导出为excel或word文件之类的操作。否则,强烈建议使用匹配的数据类型和数据库字段类型建立关联!
希望我的回答能帮到你!
5. java中定义一个类,主要从数据库中获取字段怎么编写
首先连接数据库,你也没说什么数据库,给你三种连接,
package com.cai.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties ;
public class ConnectionUtil {
/**
* 1
*在方法中固化连接参数
* @return 数据库连接
*/
public Connection getConnection(){
Connection conn = null ;
try{
Class.forName("com.mysql.jdbc.Driver") ;
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stud", "root", "root") ;
return conn ;
}catch(Exception e){
e.printStackTrace() ;
}
return null ;
}
/**
* 2
*通过方法参数方式传递连接参数
* @return 数据库连接
*/
public Connection getConnection(String driver, String url, String user, String password){
Connection conn = null ;
try{
Class.forName(driver) ;
conn = DriverManager.getConnection(url, user, password) ;
return conn ;
}catch(Exception e){
e.printStackTrace();
}
return null ;
}
/**
* 3
*通过properties配置文件的方式灵活配置连接参数,properties中的属性名固化
* @return 数据库连接
*/
public Connection openConnection(){
Connection conn = null ;
String driver = "" ;
String url = "" ;
String user = "" ;
String password = "" ;
Properties props = new Properties() ;
try{
props.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties")) ;
driver = props.getProperty("driver") ;
url = props.getProperty("url") ;
user = props.getProperty("user") ;
password = props.getProperty("password") ;
Class.forName(driver) ;
conn = DriverManager.getConnection(url, user, password) ;
return conn ;
}catch(Exception e){
e.printStackTrace() ;
}
return null ;
}
public static void main(String []args){
ConnectionUtil cu = new ConnectionUtil() ;
System.out.println("1、---->" + cu.getConnection()) ;
System.out.println("2、---->" + cu.getConnection("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/stud", "root", "root")) ;
System.out.println("3、---->" + cu.openConnection()) ;
}
}
连接上数据库就可以操作数据了,在写sql语句 根据sql执行就有返回相应字段值了