扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
jdbc连接数据库,DriverManger等初始化连接,prepareStatement语句执行sql,ResultSet拿到执行结果,while result.hasNext循环拿到数据值等。
公司主营业务:网站制作、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出商南免费做网站回馈大家。
如果不用jdbc,可以用框架,hibernate,mybatis都是可以的。
详情可以私聊我,手机打字太累了。
JDBC是java数据库连接技术的简称,它提供了连接各种数据库的能力,这便使程序的可维护性和可扩展性大大的提高了.JDBC连接数据库常见的驱动方式有两种,一种是jdbc-odbc即桥连另外一种是纯java驱动.一般在做java开发的时候用第二种.so前一种我就不说了,纯java驱动方式连接步骤如下:
1.先把一个jdbc的jar包导入到项目(用MyEclipse开发)的lib中.
2.代码如下:
[c-sharp] view plain copy
import java.sql.*;
/**
* 连接数据库帮助类
* @author Administrator
*
*/
public class BaseDao {
private static final String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=LibraryManageSystem";
private static final String USERNAME="sa";
private static final String PASSWORD="sa";
/**
* 连接数据库
* @return 数据库连接对象
* @throws ClassNotFoundException
* @throws SQLException
*/
public Connection getConn()throws ClassNotFoundException,SQLException{
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
return conn;
}
/**
* 释放资源
* @param conn
* @param pstmt
* @param rs
* @throws SQLException
*/
public void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs)throws SQLException{
if(rs!=null){
rs.close();
}
if(pstmt!=null){
pstmt.close();
}
if(conn!=null){
conn.close();
}
}
/**
* 执行SQL语句,可以进行增、删、改的操作
* @param sql
* @return 影响条数
* @throws ClassNotFoundException
* @throws SQLException
*/
public int executeSQL(String sql)throws ClassNotFoundException,SQLException{
Connection conn = this.getConn();
PreparedStatement pstmt = conn.prepareStatement(sql);
int number = pstmt.executeUpdate();
this.closeAll(conn, pstmt, null);
return number;
}
}
从代码知道首先吧jdbc驱动类装载java虚拟机中,即Class.forName(DRIVER);其次加载驱动并建立于数据库的连接Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD)然后发送SQL语句并的到结果集.之后处理结果,最后要关闭数据库的连接,释放资源.当然我说的这样连接数据库的方式使用的软件是sql和MyEclipse.
使用配置文件来连接数据库,当然这样的连接需要进行一些配置.其实这样的连接用专业术语来说就是连接池,连接池是负责分配管理和释放数据库连接.它允许用用程序重复使用一个现有的数据库连接不再重复建立连接.释放空闲时间超过最大空闲时间的数据库连接以避免因为没有释放数据库而引起的数据库遗漏.
连接池的创建分为以下几个步骤:1.配置context.xml文件 这个文件是服务器(指tomcat)的一个conf文件夹中,拷贝出来放入项目的lib文件夹中,具体配置如下:
[c-sharp] view plain copy
Resource name="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"
/在config.xml文件中加入Resource标签,然后对数据库信息进行配置,当然这个数据库指的也是sqlserver有疑问可以qq757966892联系
之后把数据库的驱动包,这里指的是sql2005的包放入服务器的lib中,这样以后如果在你自己的机子上都不用在重新导入这个包了.
然后就是从MyEclipse中取得这样的连接从而对数据库进行一些操作具体代码如下:
[c-sharp] view plain copy
package web.login.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class BaseDao {
protected Connection conn;
protected PreparedStatement ps;
protected ResultSet rs;
protected String sql;
public Connection getConn(){
try {
Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/user");
return ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public void closeAll(Connection conn,PreparedStatement ps,ResultSet rs){
try {
if(rs!=null){
rs.close();
rs=null;
}
if(ps!=null){
ps.close();
ps=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
之后便可以建立业务类从而对数据库进行操作.
//此类为连接数据库并进行数据库的操作\x0d\x0aimportjava.sql.Connection;\x0d\x0aimportjava.sql.DriverManager;\x0d\x0aimportjava.sql.ResultSet;\x0d\x0aimportjava.sql.SQLException;\x0d\x0aimportjava.sql.Statement;\x0d\x0apublicclassConn{\x0d\x0aprivatestaticConnectionconn=null;\x0d\x0aprivatestaticStatementst=null;\x0d\x0aprivatestaticResultSetrs=null;\x0d\x0a//建立数据库的连接\x0d\x0apublicConn(){\x0d\x0aStringurl="jdbc:sqlserver://localhost:1433;databaseName=ZYGX";\x0d\x0aStringuser="sa";\x0d\x0aStringpassword="123";\x0d\x0atry{\x0d\x0aClass.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");\x0d\x0aconn=DriverManager.getConnection(url,user,password);\x0d\x0ast=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);\x0d\x0a}catch(ClassNotFoundExceptione){\x0d\x0ae.printStackTrace();\x0d\x0a}catch(SQLExceptione){\x0d\x0ae.printStackTrace();\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a//通过不同的sql语句,得到相应Resultset结果集\x0d\x0apublicResultSetgetRs(Stringsql){\x0d\x0atry{\x0d\x0ars=st.executeQuery(sql);\x0d\x0a}catch(SQLExceptione){\x0d\x0ae.printStackTrace();\x0d\x0a}\x0d\x0areturnrs;\x0d\x0a}\x0d\x0a//根据不同的sql语句,执行数据库的更新操作\x0d\x0apublicintupdata(Stringsql){\x0d\x0aintnum=0;\x0d\x0atry{\x0d\x0anum=st.executeUpdate(sql);\x0d\x0a}catch(SQLExceptione){\x0d\x0ae.printStackTrace();\x0d\x0a}\x0d\x0areturnnum;\x0d\x0a}\x0d\x0a//关闭数据库连接相应的资源\x0d\x0apublicvoidclose(){\x0d\x0atry{\x0d\x0aif(rs!=null){\x0d\x0ars.close();\x0d\x0ars=null;\x0d\x0a}\x0d\x0aif(st!=null){\x0d\x0ast.close();\x0d\x0ast=null;\x0d\x0a}\x0d\x0aif(conn!=null){\x0d\x0aconn.close();\x0d\x0aconn=null;\x0d\x0a}\x0d\x0a}catch(SQLExceptione){\x0d\x0ae.printStackTrace();\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a----------------------------------------------------------------------\x0d\x0a//可以对button里添加动作按钮:\x0d\x0afinalJButtonbutton=newJButton();\x0d\x0abutton.addActionListener(newActionListener(){\x0d\x0apublicvoidactionPerformed(finalActionEvente){\x0d\x0aConnconn=newConn();\x0d\x0aStringsql1="select*fromaawherename='"+name+"'";//按name值查找\x0d\x0aResultSetrs=conn.getRs(sql1);\x0d\x0atry{\x0d\x0awhile(rs.next()){\x0d\x0aintn=rs.getString("type");\x0d\x0a}\x0d\x0a}catch(SQLExceptione){\x0d\x0ae.printStackTrace();\x0d\x0a}\x0d\x0aStringname=textField.getText();\x0d\x0aStringsql="updateaasettittle='"+name+"'";//从aa表将title字段的值改成textField里的name值\x0d\x0aStringsql2="deletefromaawherename='"+name+"'";//从aa表将按取得name的值删除该行数据\x0d\x0aStringsql3="insertintoaa(name,uname)values('"+name+"','"')";//将name,uname值新增到aa表\x0d\x0aif(conn.update(sql)==1){\x0d\x0aSystem.out.print("修改成功");\x0d\x0a}\x0d\x0aif(conn.update(sql2)==1){\x0d\x0aSystem.out.print("删除成功");\x0d\x0a}\x0d\x0aif(conn.update(sql3)==1){\x0d\x0aSystem.out.print("新增成功");\x0d\x0a}\x0d\x0a}\x0d\x0a});
package mysql;
import java.sql.*;
/**
* @author xys
*/
public class ConnectMysql {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
String url = "jdbc:mysql://localhost:3306/databaseName";
String user = "mysqluser";
String password = "password";
String driverClass = "com.mysql.cj.jdbc.Driver";
Connection connection = null;
Class.forName(driverClass);
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
if (connection != null) {
System.out.println("数据库连接成功");
} else {
System.out.println("数据库连接失败");
connection.close();
}
return connection;
}
public void getResult() throws ClassNotFoundException, SQLException {
// 实例化 Statement 对象
Statement statement = getConnection().createStatement();
// 要执行的 Mysql 数据库操作语句(增、删、改、查)
String sql = "";
// 展开结果集数据库
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 通过字段检索
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// 输出数据
System.out.println("ID : " +id);
System.out.println("name :" + name);
}
// 完成后需要依次关闭
resultSet.close();
statement.close();
getConnection().close();
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流