以下是LOG4J的配置文件:
log4j.rootLogger=DEBUG,DATABASE,A1
log4j.addivity.org.apache=true
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/demo/
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=000000
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j:ERROR Failed to load driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.log4j.jdbc.JDBCAppender.setDriver(JDBCAppender.java:351)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.log4j.config.PropertySetter.setProperty(PropertySetter.java:205)
at org.apache.log4j.config.PropertySetter.setProperty(PropertySetter.java:164)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:129)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:509)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:468)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:122)
at org.apache.log4j.Logger.getLogger(Logger.java:116)
at com.demo.gyl.Main.<clinit>(Main.java:9)
collectionRemovals=[] collectionUpdates=[]])
Hibernate: insert into person (name, password, age, id) values (?, ?, ?, ?)//这里明明已经把数据写数据库了。
测试代码:public class Main {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(Main.class); /**
* @param args
*/
public static void main(String[] args) {
if (logger.isDebugEnabled()) {
logger.debug("main(String[]) - start"); //$NON-NLS-1$
} // TODO Auto-generated method stub
Operate o=new Operate();
Person p=new Person();
p.setAge(12);
p.setName("aaaa");
p.setPassword("aaaaaaa");
o.insert2(p); if (logger.isDebugEnabled()) {
logger.debug("main(String[]) - end"); //$NON-NLS-1$
}
}}
log4j.rootLogger=DEBUG,DATABASE,A1
log4j.addivity.org.apache=true
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/demo/
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=000000
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j:ERROR Failed to load driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.log4j.jdbc.JDBCAppender.setDriver(JDBCAppender.java:351)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.log4j.config.PropertySetter.setProperty(PropertySetter.java:205)
at org.apache.log4j.config.PropertySetter.setProperty(PropertySetter.java:164)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:129)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:509)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:468)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:122)
at org.apache.log4j.Logger.getLogger(Logger.java:116)
at com.demo.gyl.Main.<clinit>(Main.java:9)
collectionRemovals=[] collectionUpdates=[]])
Hibernate: insert into person (name, password, age, id) values (?, ?, ?, ?)//这里明明已经把数据写数据库了。
测试代码:public class Main {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(Main.class); /**
* @param args
*/
public static void main(String[] args) {
if (logger.isDebugEnabled()) {
logger.debug("main(String[]) - start"); //$NON-NLS-1$
} // TODO Auto-generated method stub
Operate o=new Operate();
Person p=new Person();
p.setAge(12);
p.setName("aaaa");
p.setPassword("aaaaaaa");
o.insert2(p); if (logger.isDebugEnabled()) {
logger.debug("main(String[]) - end"); //$NON-NLS-1$
}
}}
解决方案 »
- 问个获取自增长字段的问题。。
- 虚拟目录出现的问题
- fckeditor 的servlet上传功能,,支持JDK那个版本呢>>>??
- 急急急!!!做一购物网站,点击商品页时,IE7.0出现“IE无法打开Internet站点,已终止操作,,IE6和IE8就没事”
- 这是什么错误啊/???
- 处理ResultSet对象,放到一个ArrayList里面的问题 ,编译不能通过
- 提交按钮聚焦问题
- (急)如何在submit的按钮上执行javascript脚本?
- jsp向sqlserver 提交汉字信息时乱码问题
- 在ASP中replace()函数对应的JSP函数是什么呢,怎么用呢?
- 求教 tabbedPanel 中div的 显示与隐藏
- 自定义标签
高手来解决
Person p=new Person();
p.setAge(12);
p.setName("aaaa");
p.setPassword("aaaaaaa");
o.insert2(p); 我的HIBERNATE插入没有问题。这个已经测试过了。而且,Hibernate: insert into person (name, password, age, id) values (?, ?, ?, ?)已经把PERSON对像保存。
问题是,如果LOG4J的日志不能写入数据库。提示找不到DRIVER。
我确认\lib里有驱动。mysql-connector-java-5.0.4-bin.jar
看你的mysql的jar包是否导入,还有你的mysql jar包是否与其
他jar包冲突了
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Vector;
/**
* 封装DataSource
*
* @version 1.0, 2005-9-16 11:18:44
*/
public class DataSourcePackBean {
/**
* log4j
*/
private Logger logger = Logger.getLogger(DataSourcePackBean.class);
//DataSourcePackBean.class日志记录器的名与类名相同;
/**
* 引用名
*/
private String ref;
/**
* DataSource对象
*/
private DataSource ds;
/**
* 保存当前DataSource对象中所有打开的Connection对象的引用。
*/
private Vector openedConnections = new Vector();
/**
* 接收DataSource引用名,查找DataSource对象。
*
* @param ref DataSource引用名
*/
protected DataSourcePackBean(String ref) {
this.ref = ref;
this.ds = lookup(ref);
}
public String getRef() {
return ref;
}
public int getActive() {
return openedConnections.size();
}
/**
* 打开一个连接
*
* @param username 连接数据库的登录用户名,如果为null,表示用默认用户连接
* @param password 连接数据库的登录密码
* @return
* @throws SQLException
*/
public Connection getConnection(String username, String password) throws SQLException {
Connection conn = (username == null) ? ds.getConnection() : ds.getConnection(username, password);
// add to vector
openedConnections.add(conn);
// log
StringBuffer log = new StringBuffer();
log.append("Open").append(" a connection(").append(conn.hashCode()).append(") of [").append(ref).append("]\n");
log.append(openedConnections.size()).append(" connection").append(" in use");
logger.debug(log);
// return
return conn;
}
/**
* 关闭一个连接
*
* @param conn
* @throws SQLException
*/
public void closeConnection(Connection conn) throws SQLException {
conn.close();
// remove from Vector
openedConnections.remove(conn);
// log
StringBuffer log = new StringBuffer();
log.append("Close").append(" a connection(").append(conn.hashCode()).append(") of [").append(ref).append("]\n");//添加内容到日志记录中
log.append(openedConnections.size()).append(" connection").append(" in use");
logger.debug(log);
}
/**
* close all Connection of this DataSource
* @throws SQLException
*/
public void closeAll() throws SQLException {
for (int i = 0; i < openedConnections.size(); i++) {
((Connection)openedConnections.get(i)).close();
}
// clear Vector
openedConnections.removeAllElements();
}
/**
* get a DataSource
* @param ref the JNDI name of the DataSource
* @return
*/
private DataSource lookup(String ref) {
DataSource dataSource = null;
// 查找ref数据源对象
try {
Context env = new InitialContext();
dataSource = (DataSource) env.lookup(ref);
// 测试数据库有效性
dataSource.getConnection().close();
logger.debug(new StringBuffer().append("DataSource[").append(ref).append("] has been initialized successfully."));
} catch (Exception e) {
e.printStackTrace();
}
// return
return dataSource;
}
public SQLRunnerIfc getSQLRunner(String username, String password) throws SQLException {
return new SQLRunner(username, password, this);
}
public SQLRunnerIfc getSQLRunner() throws SQLException {
return getSQLRunner(null, null);
}
}
在网上有很多人遇到了这个问题。但只有一个可以解决问题的贴子。希望大家不要犯同样的错了.但是新问题又来了.
log4j:ERROR Failed to excute sql
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'hibernate.c3p0.max_size' and c3p0-style property 'c3p0.max_size' have been set i' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235)
at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:178)
at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:250)
at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
at org.apache.log4j.Category.callAppenders(Category.java:203)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.log(Category.java:853)
at org.apache.commons.logging.impl.Log4JLogger.warn(Log4JLogger.java:216)
at org.hibernate.connection.C3P0ConnectionProvider.warnPropertyConflict(C3P0ConnectionProvider.java:210)
at org.hibernate.connection.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:125)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at com.demo.gyl.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:31)
at com.demo.gyl.Operate.insert2(Operate.java:53)
at com.demo.gyl.Main.main(Main.java:25)
SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])
Hibernate: insert into person (name, password, age, id) values (?, ?, ?, ?)
SQL不能执行?
但是我的数据库里已经有数据了.
为什么报错?
应该是你的配置出问题了
2. SQL语句里的单引号 是中文的 要换成英文的