mysqljdbc源码(commysqljdbc)
本文目录一览:
- 1、谁能够帮我找份基于JAVA和MYSQL的应用程序源码
- 2、你有一个简单的数据库的源代码吗?最好用Java实现的...
- 3、spring中配置MySql数据源,怎样配置数据库信息
- 4、如何找到mysql-jdbc驱动源码
- 5、如何才能让自己看懂MySQL源码,并且能够自己写出相应的patch
- 6、eclipse怎么关联mysql驱动的源码
谁能够帮我找份基于JAVA和MYSQL的应用程序源码
package com;
import java.sql.*;
public class MysqlJdbc {
public static void main(String args[]) {
try {
Class.forName("com.mysql.jdbc.Driver"); //加载MYSQL JDBC驱动程序
System.out.println("Success loading Mysql Driver!");
}
catch (Exception e) {
System.out.print("Error loading Mysql Driver!");
e.printStackTrace();
}
try {
Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/sakila","root","123");
//连接URL为 jdbc:mysql//服务器地址/数据库名
//后面的2个参数分别是登陆用户名和密码
System.out.println("Success connect Mysql server!");
Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery("select * from actor");
while (rs.next()) {
System.out.println(rs.getString("actor_id")+"\t"+rs.getString("first_name")+"\t"+"\t"+rs.getString("last_name")+"\t"+rs.getString("last_update"));
}
}
catch (Exception e) {
System.out.print("get data error!");
e.printStackTrace();
}
}
}
你有一个简单的数据库的源代码吗?最好用Java实现的...
class ConnectionProvider{
private static String JDBC_DRIVER;
private static String DB_URL;
private static String DB_USER;
private static String DB_PASSWORD;
public ConnectionProvider()
{
JDBC_DRIVER = "com.mysql.jdbc.Driver"
DB_URL = "jdbc:mysql://localhost:3306/u-disk";
DB_USER = "root";
DB_PASSWORD = "root"
};
public Connection getConnection()
{
try {
Class.forName(JDBC_DRIVER);
} catch (Exception e) {
System.out.println("驱动文件路径有误!");
}
}
Connection con = null;
try {
con = DriverManager.getConnection(DB_URL, DB_USER,
DB_PASSWORD);
} catch (SQLException e) {
System.out.println("数据库连接建立异常!\n@shy2850@" + e.getMessage() +
e.getCause());
}
System.out.println("得到连接:Connection " + ConnectionPool.connections.size() + 1);
return new ConnectionImpl(con);
}
}
可以使用这个包装的数据库连接数据源在DAO工具类中使用:
package com.jdbc;
import java.sql.*;
/**课题:封装数据库的增删改查的工具类的实现。
*
* 假设相关数据库的表结构如下:
* 表名:user
* 列名及属性:id(int 自增),name(varchar(20)),tele(char(12)),birthday(date)
* @author shy2850
*/
public class UserDAO {
Connection conn;
public UserDAO(Connection conn) {
this.conn = conn;
}
public int save(User user) throws SQLException {
String sql = "insert into user values(0,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getName());
pstmt.setString(2, user.getTele());
pstmt.setDate(3, user.getBirthday());
int n = pstmt.executeUpdate();
pstmt.close();
return n;
}
public int delete(User user) throws SQLException{
String sql = "delete from user where id = "+user.getId();
Statement stmt = conn.createStatement();
int n = stmt.executeUpdate(sql);
stmt.close();
return n;
}
public int update(User user) throws SQLException{
String sql = "update user set name=?, tele=?, birthday=? where id = "+user.getId();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(2, user.getName());
pstmt.setString(3, user.getTele());
pstmt.setDate(4, user.getBirthday());
int n = pstmt.executeUpdate(sql);
pstmt.close();
return n;
}
public User getUser(Integer id) throws SQLException{
String sql = "select * from user where id = " + id;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
User user = getUserFromResultSet(rs);
rs.close();
stmt.close();
return user;
}
static User getUserFromResultSet(ResultSet rs) throws SQLException{
Integer id = rs.getInt("id");
String name= rs.getString("name");
String tele= rs.getString("tele");
Date birthday = rs.getDate("birthday");
return new User(id, name, tele, birthday);
}
}
/**
* 构建数据库表的java类映射
*/
class User{
private Integer id;
private String name;
private String tele;
private Date birthday;
public User() {
}
public User(Integer id, String name, String tele, Date birthday) {
super();
this.id = id;
this.name = name;
this.tele = tele;
this.birthday = birthday;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTele() {
return tele;
}
public void setTele(String tele) {
this.tele = tele;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
spring中配置MySql数据源,怎样配置数据库信息
spring中配置数据源的几种常见方式:
#mysql 数据库配置(jdbc.properties)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/databaseName?useUnicode=truecharacterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
1.使用spring自带的数据源org.springframework.jdbc.datasource.DriverManagerDataSource;
方式一:
bean id="propertyConfigurer" class="3c3d-3f8b-32a8-2c18 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="/WEB-INF/jdbc.properties" /
bean id="dataSource" class="3f8b-32a8-2c18-09bf org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}" /
p标记需要:xmlns:p=""
DriverManagerDataSource源码实现:
public class DriverManagerDataSource extends AbstractDriverBasedDataSource {
public DriverManagerDataSource() {
}
public DriverManagerDataSource(String url) {
}
public DriverManagerDataSource(String url, String username, String password) {
}
public DriverManagerDataSource(String url, Properties conProps) {
}
public void setDriverClassName(String driverClassName) {
}
protected Connection getConnectionFromDriver(Properties props) throws SQLException {
}
protected Connection getConnectionFromDriverManager(String url, Properties props) throws SQLException {
}
}
方式二:
bean id="dataSource" class="32a8-2c18-09bf-061f org.springframework.jdbc.datasource.DriverManagerDataSource"
property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /
property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" /
property name="username" value="root" /
property name="password" value="root" /
/bean
2.DBCP数据源;
DBCP(DataBase connection pool)。是 apache 上的一个 java 连接池项目mysqljdbc源码,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为mysqljdbc源码,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
bean id="dataSource" destroy-method="close" class="2c18-09bf-061f-1e78 org.apache.commons.dbcp.BasicDataSource"
property name="driverClassName" value="${jdbc.driverClassName}" /
property name="url" value="${jdbc.url}" /
property name="username" value="${jdbc.username}" /
property name="password" value="${jdbc.password}" /
/bean
DBCP实现:
class JdbcUtil
{
private static BasicDataSource bds;
static
{
if(bds==null)
{
bds= new BasicDataSource();
}
//分别设置数据库的连接参数
bds.setDriverClassName();
bds.setUrl();
bds.setUsername();
bds.setPassword();
}
public static Connection getConnection()
{
return bds.getConnection();
}
3.C3P0数据源;
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的有Hibernate,Spring等。
依赖jar包:c3p0-0.9.1.jar、c3p0-0.9.1.2.jar、c3p0-0.9.1-pre6.jar
c3p0与dbcp区别:
dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能
bean id="dataSource" class="09bf-061f-1e78-0ca9 com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
property name="driverClass"valueoracle.jdbc.driver.OracleDriver/value/property
property name="jdbcUrl"valuejdbc:oracle:thin:@localhost:1521:Test/value/property
property name="user"valueroot/value/property
property name="password"valueroot/value/property
!--连接池中保留的最小连接数。--
property name="minPoolSize" value="10" /
!--连接池中保留的最大连接数。Default: 15 --
property name="maxPoolSize" value="100" /
!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --
property name="maxIdleTime" value="1800" /
!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --
property name="acquireIncrement" value="3" /
property name="maxStatements" value="1000" /
property name="initialPoolSize" value="10" /
!--每60秒检查所有连接池中的空闲连接。Default: 0 --
property name="idleConnectionTestPeriod" value="60" /
!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --
property name="acquireRetryAttempts" value="30" /
property name="breakAfterAcquireFailure" value="true" /
property name="testConnectionOnCheckout" value="false" /
/bean
4.JNDI数据源;
如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身
提供的数据源。应用服务器的数据源 使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的
JndiObjectFactoryBean类。下面是一个简单的配置:
方式一:
bean id="dataSource" class="061f-1e78-0ca9-19de org.springframework.jndi.JndiObjectFactoryBean"
property name="jndiName" value="java:comp/env/jdbc/bbt"/
/bean
value值即JNDI的名称
方式二:
bean id="queueTarget" class="1e78-0ca9-19de-063d org.springframework.jndi.JndiObjectTargetSource"
property name="jndiName"
valuequeue/testQueue/value
/property
/bean
方式三:
如果不使用JndiTemplate实现InitialContext环境变量的配置,则需要jndi.properties文件(放在classpath中,一般放在src下面),内容如下
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
方式四:
使用JndiTemplate实现InitialContext环境变量的配置,例如
bean id="queueTarget" class="0ca9-19de-063d-fec0 org.springframework.jndi.JndiObjectTargetSource"
property name="jndiName"
valuequeue/testQueue/value
/property
property name="jndiTemplate"
ref local="jndiTemplate"/
/property
/bean
bean id="jndiTemplate" class="19de-063d-fec0-b219 org.springframework.jndi.JndiTemplate"
property name="environment"
props
prop key="java.naming.factory.initial"org.jnp.interfaces.NamingContextFactory/prop
prop key="java.naming.provider.url"jnp://localhost:1099/prop
prop key="java.naming.factory.url.pkgs"org.jboss.naming:org.jnp.interfaces/prop
/props
/property
/bean
如何找到mysql-jdbc驱动源码
在工程中右键新建file,命名为jdbc.properties
创建完毕如图:
在jdbc.properties文件中输入如下信息,分别是数据库的驱动,连接,用户名和密码
新建JdbcTest2.java类
输入如下代码:
代码说明:
这段代码是读取配置文件,把配置文件中的各个项通过名称读取出来
这段代码是通过反射来创建Driver对象,反射就是类的实例化
在主函数中输入如下,测试方法
运行之后的结果如下,表示连接成功!
如何才能让自己看懂MySQL源码,并且能够自己写出相应的patch
1. 网络模型,MySQL 的网络模型太老了, one connection per thread,代码很简单。
2. 协议解析,MySQL 的 协议还算比较简单的,但是设计的 prepare 的协议就要花点时间,我写个一些分析的文章和图,网上你搜索下。这里你要花时间把 mysql client 这个客户端的代码都看看,这样对你往后无论开发 jdbc还是 libmysqlclient 的项目都有帮助。
3. SQL 解析,咳咳,不好意思大难题了。不过还好对于编译原理的知识你只需要了解前端的词法解析和 yacc 的使用即可,你可以参考 flex and bison 这本书 ,仅仅需要看懂 yy 和 lex 文件即可,yy 比较长,但里面涵盖了所有的 MySQL 所支持的 sql 的语法。我也写过一个简单的 sql parser,在我的 github 上。
4.replication,这个不复杂就几个文件。
eclipse怎么关联mysql驱动的源码
工具mysqljdbc源码:
eclipse
方法:
在工程中右键新建filemysqljdbc源码,命名为jdbc.properties
创建完毕如图:
在jdbc.properties文件中输入如下信息mysqljdbc源码,分别是数据库mysqljdbc源码的驱动,连接,用户名和密码
新建JdbcTest2.java类
输入如下代码:
代码说明:
这段代码是读取配置文件,把配置文件中的各个项通过名称读取出来
这段代码是通过反射来创建Driver对象,反射就是类的实例化
在主函数中输入如下,测试方法
运行之后的结果如下,表示连接成功mysqljdbc源码!