六月 2010


javaee24 六 2010 05:32 下午

环境win32、mingw、codelite
1、下载mysql Microsoft Windows 32. (ZIP format)

http://downloads.mysql.com/archives.php

获得mysql-noinstall-5.1.45-win32.zip,解压缩。
2、用 reimp.exe将libmysql.lib转换为libmysql.a
获取reimp.exe 从http://www.qtcn.org/download/mingw-utils-0.3.tar.gz解压缩
拷贝D:\mysql-5.1.45-win32\lib\opt\libmysql.lib到 reimp目录下。在cmd进入目录并执行
reimp libmysql.lib
执行完后产生liblibmysql.a和LIBMYSQL.def
将liblibmysql.a改名为libmysql.a,并拷贝回D:\mysql-5.1.45-win32\lib\opt\目录下
3、Complier–>Additional Search Path设置为
.;D:\mysql-5.1.45-win32\include;D:\MinGW\include\c++\3.4.5;D:\MinGW\include\c++\3.4.5\mingw32;D:\MinGW\include\c++\3.4.5\backward;D:\MinGW\include;
4、Linker–>Libray Path设置为
D:\MinGW\lib;D:\mysql-5.1.45-win32\lib\opt
Linker–>Libraries设置为
libmysql;libwsock32;
5、编写程序
将D:\mysql-5.1.45-win32\lib\opt\libmysql.dll拷贝到C:\WINDOWS\system32目录下
main.cpp
#include “MySqlTestClass.h”
int main(int argc, char* argv[]){
MySqlTestClass* myClass = new MySqlTestClass(“127.0.0.1″,”3306″,”root”,”root”,”test1″);
myClass->testMysql();
return 0;
}

MySqlTestClass.h
class MySqlTestClass
{
protected:
char* dbAddress;
char* dbPort;
char* dbUser;
char* dbPassword;
char* dbName;

public:
MySqlTestClass();
MySqlTestClass(char* dbAddress,char* dbPort,char* dbUser,char* dbPassword,char* dbName);
void testMysql();
};

MySqlTestClass.cpp
#include <MySqlTestClass.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <winsock.h>
#include <mysql.h>

MySqlTestClass::MySqlTestClass()
{

}

MySqlTestClass::MySqlTestClass(char* dbAddress,char* dbPort,char* dbUser,char* dbPassword,char* dbName)
{
this->dbAddress=dbAddress;
this->dbPassword=dbPort;
this->dbUser=dbUser;
this->dbPassword=dbPassword;
this->dbName=dbName;
}

void MySqlTestClass::testMysql(){

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query;
int t,r;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,this->dbAddress,this->dbUser, this->dbPassword, this->dbName,0,NULL,CLIENT_MULTI_STATEMENTS))
{
printf( “Error connecting to database: %s\n”,mysql_error(&mysql));
}
else printf(“Connected…\n”);
query = “select * from user”;

t = mysql_real_query(&mysql,query,(unsigned int) strlen(query));
if (t)
{
printf(“Error making query: %s\n”,
mysql_error(&mysql));
}else {
printf(“[%s] made…\n”, query);
}
res = mysql_store_result(&mysql);
while(row = mysql_fetch_row(res))
{
for(t=0;t<mysql_num_fields(res);t++)
{
printf(“%s “,row[t]);
}
printf(“\n”);
}

printf(“mysql_free_result…\n”);
mysql_free_result(res);

}

javaee and spring24 六 2010 05:31 下午

1、web容器改默认端口为自定义端口
在D:\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\server.xml
找到
<Connector protocol=”HTTP/1.1″ port=”8080″ address=”${jboss.bind.address}” connectionTimeout=”20000″ redirectPort=”8443″ />
port=”8080″改为自定义端口
2、让非本机的局域网地址访问web容器
默认ip绑定的只能通过127.0.0.1:8080/来访问。
修改D:\jboss-5.1.0.GA\bin\run.bat
找到-Djava.endorsed.dirs=”%JBOSS_ENDORSED_DIRS%” ^
在上边加一行
-Djboss.bind.address=0.0.0.0 ^
变为如下
:RESTART
“%JAVA%” %JAVA_OPTS% ^
-Djboss.bind.address=0.0.0.0 ^
-Djava.endorsed.dirs=”%JBOSS_ENDORSED_DIRS%” ^
-classpath “%JBOSS_CLASSPATH%” ^
org.jboss.Main %*

3、包隔离发布
在xxx.war\WEB-INF\目录下新增jboss-web.xml
内容如下
<!DOCTYPE jboss-web PUBLIC “-//JBoss//DTD Web Application 5.0//EN”
“http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd”>
<jboss-web>

<class-loading java2ClassLoadingCompliance=’true’>
<loader-repository>com.footmarktech:archive=helloworld-0.0.1
<loader-repository-config>java2ParentDelegaton=true</loader-repository-config>
</loader-repository>
</class-loading>

<context-root>helloworld</context-root>
</jboss-web>
4、中文乱码
在D:\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\server.xml
找到
<Connector protocol=”HTTP/1.1″ port=”8080″ address=”${jboss.bind.address}” connectionTimeout=”20000″ redirectPort=”8443″ />
增加attribute URIEncoding=’UTF-8′
变成<Connector protocol=”HTTP/1.1″ port=”8080″ address=”${jboss.bind.address}” connectionTimeout=”20000″ redirectPort=”8443″ attribute URIEncoding=’UTF-8′/>
5、jboss5部署数据源
1)把mysql的jdbc驱动包mysql-connector-java-5.1.7-bin.jar放进D:\jboss-5.1.0.GA\server\default\lib\中
2)D:\jboss-5.1.0.GA\server\default\deploy中新增一个文件名为mysql-ds.xml
内容如下
<?xml version=”1.0″ encoding=”UTF-8″?>
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://127.0.0.1:3306/mytest?user=root&amp;password=root&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!– should only be used on drivers after 3.22.1 with “ping” support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
–>
<!– sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
–>
<!– sql to call on an existing pooled connection when it is obtained from pool – MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
–>

<!– corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) –>
<!–
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>–>
</local-tx-datasource>
</datasources>
3)使用spring获取数据源

<bean id=”dataSource”>
<property name=”jndiName”><value>java:/MySqlDS</value></property>
<property name=”resourceRef”><value>false</value></property>
<property name=”jndiEnvironment”>
<props>
<prop key=”java.naming.provider.url”>jnp://localhost:1099</prop>
<prop key=”java.naming.factory.initial”>org.jnp.interfaces.NamingContextFactory</prop>
</props>
</property>
</bean>
4)错误
错误1
2010-06-21 06:46:16,934 WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] (main) Throwable while attempting to get a new connection: null
org.jboss.resource.JBossResourceException: Could not create connection; – nested throwable: (org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL: class: com.mysql.jdbc.Driver, url: jdbc:mysql://127.0.0.1:3306/mytest?user=root&password=root&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:225)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:195)

由于mysqljdbc驱动包没有被提前加载,将mysqljdbc驱动放到server/default/lib下即可

错误2
Caused by: javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: The reference to entity "password" must end with the ';' delimiter.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:190)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:238)
at org.jboss.resource.deployers.ManagedConnectionFactoryParserDeployer.parse(ManagedConnectionFactoryParserDeployer.java:123)
at org.jboss.resource.deployers.ManagedConnectionFactoryParserDeployer.parse(ManagedConnectionFactoryParserDeployer.java:63)
at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parseAndInit(AbstractVFSParsingDeployer.java:256)
at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parse(AbstractVFSParsingDeployer.java:239)
at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:355)
… 33 more
Caused by: org.xml.sax.SAXParseException: The reference to entity “password” must end with the ‘;’ delimiter.

jdbc驱动链接书写不正确
jdbc:mysql://127.0.0.1:3306/mytest?user=root&password=root&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
jdbc:mysql://127.0.0.1:3306/mytest?user=root&amp;password=root&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8

javaee and javascript24 六 2010 05:30 下午

<script>

function checkDate(dateString){//输入必须为20100101格式

var pattern  = /^(\d{4})(\d{2})(\d{2})$/;

var patternResult = pattern.test(dateString);

if(!patternResult){

return false;

}

var _year =dateString.substr(0,4);

var _month =dateString.substr(4,2);

var _day =dateString.substr(6,2);

var mmInt  = parseInt(_month,10);

var ddInt  = parseInt(_day,10);

if(mmInt>12){return false;}

if(mmInt==2){//如果是2月份

if((_year%4==0 && _year%100!=0)||_year%400==0){//判断是否为闰年

if(ddInt>29){return false;}

}else{

if(ddInt>28){return false;}

}

}

var mm=new Array(1,3,5,7,8,10,12); //判断每月中的最大天数

var maxDay =30;

for(i=0;i< mm.length;i++){

if (mmInt == mm[i]){

maxDay =31;

break;

}else{continue;}

}

if(ddInt>maxDay){return false;}

return true;

}

</script>

javaee24 六 2010 05:29 下午

1)http://jdbc.postgresql.org/

2)

CREATE TABLE tl_test

(

id character varying NOT NULL,

“name” character varying,

CONSTRAINT tl_test_pkey PRIMARY KEY (id)

)

WITH (

OIDS=FALSE

);

ALTER TABLE tl_test OWNER TO “admin”;

3)

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class Test {

public static void main(String[] args) {

try {

Class.forName(“org.postgresql.Driver”).newInstance();

Connection con = DriverManager.getConnection(“jdbc:postgresql://127.0.0.1:5432/test”, “admin”, “admin”);

Statement st = con.createStatement();

ResultSet rs = st.executeQuery(“select * from tl_test limit 2 offset 1″);

while (rs.next()) {

System.out.println(rs.getString(2));

}

st.close();

con.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

4)pgsql用户手册中文翻译

http://www.phpx.com/man/Pgsql/index.html

5)pgsql导出导入数据

备份:pg_dump dbname > outfile

恢复:psql dbname < infile

javaee and spring24 六 2010 05:28 下午

1)将mysql数据库jdbc驱动mysql-connector-java-5.1.7-bin.jar放置于D:\resin-3.1.9\ext-lib目录下

2)D:\resin-3.1.9\conf\resin.conf增加

<database>

<jndi-name>jdbc/mysql</jndi-name>

<driver type=”com.mysql.jdbc.Driver”>

<url>jdbc:mysql://localhost:3306/fare?user=root&amp;password=root&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8</url>

<user>root</user>

<password>root</password>

</driver>

<prepared-statement-cache-size>8</prepared-statement-cache-size>

<max-connections>20</max-connections>

<max-idle-time>30s</max-idle-time>

</database>

3)spring中通过jndi获取数据源

<bean id=”dataSource”>

<property name=”jndiName”><value>java:comp/env/jdbc/mysql</value></property>

</bean>