package File; import java.io.File; import java.io.FilenameFilter; public class FileDemo { public static void main(String[] args){ -->首先声明一个File对象,指明你的文件目录路径,这里是我计算机中的东西,记住一定要是路径 File dir = new File("E:\\java程序\\java code\\copyfile\\core java"); -->Filter是你自己写的一个实现FilenameFilter接口的类,这个接口用用来过滤文件的名字,传入的参数是要过滤的关键字 Filter filter=new Filter("java"); -->这里将通过Filter过滤得到的文件列表放到一个数组中去 String fileList[] = dir.list(filter); System.out.println("找到文件数:"+fileList.length); -->下面就是通过遍历这个数组,从数组中取到文件名 for(int I = 0 ; I < fileList.length; I++){ -->因为在下面要对文件进行判断,所以这里要加上路径和文件名,否则下面的判断会因为找不到文件而判断错误 File tmpFile = new File("E:\\JAVA程序\\JAVA code\\copyfile\\core java\\"+fileList[I]); -->判断找到的这些文件是目录呢还是文件 if(tmpFile.isFile()){ System.out.println("文件:"+tmpFile); }else{ System.out.println("目录:"+tmpFile); } } } } -->实现过滤器接口的类,这个类主要作用是找出所有文件夹下的以extension结尾的文件 class Filter implements FilenameFilter{ String extension; Filter(String extension) { this.extension=extension; } public boolean accept(File directory,String filename){ -->这里的filename.endsWith("."+extension);方法就是找以.extension结尾的文件 return filename.endsWith("."+extension); } } 我所修改的程序简单的讲就是,查找所有在E:\\JAVA程序\\JAVA code\\copyfile\\core java这个目录下的以.java结尾的文件
找出在某一个文件夹下的某一类文件
遍历整个集合
关于Iterator it = list.iterator(); 迭代器是通常是和集合一起用的,是一种java的模式,俗称迭代子,用来遍历整个集合,从集合中取数据 举例: package Iterator; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorTest { public static void main(String[] args){ Collection list = new ArrayList(); //定义一个ArrayList数组集合 list.add("3"); //向这个集合中放入数据 list.add("2"); list.add("1"); list.add("4"); list.add("5"); list.add("6"); Iterator it = list.iterator(); // 第一步 while(it.hasNext()){ //第二步 String temp = (String)it.next(); //取出元素 System.out.println(temp); } } }
java中所有的数据结构都是对象,通过运算符new为他们分配内存堆
应该说你这句话不太对,java中的一些基本数据类型,如int ,double ,long,boolean等这些基本类型不是对象,所以严格的来说java不是都是对象的,除了这些个之外其他的都是对象了。 java中要产生对象要具有生命力就要做两件事情,一是声明,这个就好像告诉别人你要生孩子了。二就是要具体分配一个空间给这个对象,让这个对象可以有自己的生命力,这个就是new,而空间就是指的内存空间,java中任何可以操作的对象都是需要得到自己的内存空间才能被使用的
java 进制转换
十进制转成十六进制: <BR>
<BR>
Integer.toHexString(int i) <BR>
<BR>
十进制转成八进制 <BR>
<BR>
Integer.toOctalString(int i) <BR>
<BR>
十进制转成二进制 <BR>
<BR>
Integer.toBinaryString(int i) <BR>
<BR>
十六进制转成十进制 <BR>
<BR>
Integer.valueOf("FFFF",16).toString() <BR>
<BR>
八进制转成十进制 <BR>
<BR>
Integer.valueOf("876",8).toString() <BR>
<BR>
二进制转十进制 <BR>
<BR>
Integer.valueOf("0101",2).toString() <BR>
<BR>
<BR>
<BR>
有什么方法可以直接将2,8,16进制直接转换为10进制的吗? <BR>
<BR>
java.lang.Integer类 <BR>
<BR>
parseInt(String s, int radix) <BR>
<BR>
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 <BR>
<BR>
examples from jdk: <BR>
<BR>
parseInt("0", 10) returns 0 <BR>
<BR>
parseInt("473", 10) returns 473 <BR>
<BR>
parseInt("-0", 10) returns 0 <BR>
<BR>
parseInt("-FF", 16) returns -255 <BR>
<BR>
parseInt("1100110", 2) returns 102 <BR>
<BR>
parseInt("2147483647", 10) returns 2147483647 <BR>
<BR>
parseInt("-2147483648", 10) returns -2147483648 <BR>
<BR>
parseInt("2147483648", 10) throws a NumberFormatException <BR>
<BR>
parseInt("99",throws a NumberFormatException <BR>
<BR>
parseInt("Kona", 10) throws a NumberFormatException <BR>
<BR>
parseInt("Kona", 27) returns 411787 <BR>
<BR>
<BR>
<BR>
进制转换如何写(二,八,十六)不用算法 <BR>
<BR>
Integer.toBinaryString <BR>
<BR>
Integer.toOctalString <BR>
<BR>
Integer.toHexString <BR>
<BR>
<BR>
<BR>
<BR>
<BR>
例二 <BR>
<BR>
<BR>
<BR>
public class Test{ <BR>
<BR>
public static void main(String args[]){ <BR>
<BR>
<BR>
<BR>
int i=100; <BR>
<BR>
String binStr=Integer.toBinaryString(i); <BR>
<BR>
String otcStr=Integer.toOctalString(i); <BR>
<BR>
String hexStr=Integer.toHexString(i); <BR>
<BR>
System.out.println(binStr); <BR>
<BR>
<BR>
<BR>
} <BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
例二 <BR>
<BR>
public class TestStringFormat { <BR>
<BR>
public static void main(String[] args) { <BR>
<BR>
if (args.length == 0) { <BR>
<BR>
System.out.println("usage: java TestStringFormat <a number>"); <BR>
<BR>
System.exit(0); <BR>
<BR>
} <BR>
<BR>
<BR>
<BR>
Integer factor = Integer.valueOf(args[0]); <BR>
<BR>
<BR>
<BR>
String s; <BR>
<BR>
<BR>
<BR>
s = String.format("%d", factor); <BR>
<BR>
System.out.println(s); <BR>
<BR>
s = String.format("%x", factor); <BR>
<BR>
System.out.println(s); <BR>
<BR>
s = String.format("%o", factor); <BR>
<BR>
System.out.println(s); <BR>
<BR>
} <BR>
<BR>
} <BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
其他方法: <BR>
<BR>
<BR>
<BR>
Integer.toHexString(你的10进制数); <BR>
<BR>
例如 <BR>
<BR>
String temp = Integer.toHexString(75); <BR>
<BR>
输出temp就为 4b <BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
//输入一个10进制数字并把它转换成16进制 <BR>
<BR>
import java.io.*; <BR>
<BR>
public class toHex{ <BR>
<BR>
<BR>
<BR>
public static void main(String[]args){ <BR>
<BR>
<BR>
<BR>
int input;//存放输入数据 <BR>
<BR>
//创建输入字符串的实例 <BR>
<BR>
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in)); <BR>
<BR>
System.out.println("请输入一个的整数:"); <BR>
<BR>
String x=null; <BR>
<BR>
try{ <BR>
<BR>
x=strin.readLine(); <BR>
<BR>
}catch(IOException ex){ <BR>
<BR>
ex.printStackTrace(); <BR>
<BR>
} <BR>
<BR>
input=Integer.parseInt(x); <BR>
<BR>
System.out.println ("你输入的数字是:"+input);//输出从键盘接收到的数字 <BR>
<BR>
<BR>
<BR>
System.out.println ("它的16进制是:"+Integer.toHexString(input));//用toHexString把10进制转换成16进制 <BR>
<BR>
} <BR>
<BR>
} <BR>
<BR>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alex197963/archive/2009/05/27/4219534.aspx
public class TigerNumberDemo {
public static void main(String[] args) {
// 输出 19 的十进制表示
System.out.printf("%d%n", 19);
// 输出 19 的八进制表示
System.out.printf("%o%n", 19);
// 输出 19 的十六进制表示
System.out.printf("%x%n", 19);
}
}
public class TigerNumberDemo {
public static void main(String[] args) {
// 输出 19 的十进制表示
System.out.printf("%d%n", 19);
// 输出 19 的八进制表示
System.out.printf("%o%n", 19);
// 输出 19 的十六进制表示
System.out.printf("%x%n", 19);
}
}
利用Integer类方法:
view plaincopy to clipboardprint?
public class NumberDemo {
public static void main(String[] args) {
// 十进制 19 转成二进制 10011
System.out.println(Integer.toBinaryString(19));
// 十进制 19 转成十六进制 13
System.out.println(Integer.toHexString(19));
// 十进制 19 转成八进制 23
System.out.println(Integer.toOctalString(19));
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/haoyuewuwei/archive/2009/08/19/4458968.aspx
二进制,八进制,十六进制间的转换 收藏
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
八进制转成十进制
Integer.valueOf("876",8).toString()
二进制转十进制
Integer.valueOf("0101",2).toString()
有什么方法可以直接将2,8,16进制直接转换为10进制的吗?
java.lang.Integer类
parseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
examples from jdk:
parseInt("0", 10) returns 0
parseInt("473", 10) returns 473
parseInt("-0", 10) returns 0
parseInt("-FF", 16) returns -255
parseInt("1100110", 2) returns 102
parseInt("2147483647", 10) returns 2147483647
parseInt("-2147483648", 10) returns -2147483648
parseInt("2147483648", 10) throws a NumberFormatException
parseInt("99", throws a NumberFormatException
parseInt("Kona", 10) throws a NumberFormatException
parseInt("Kona", 27) returns 411787
进制转换如何写(二,八,十六)不用算法
Integer.toBinaryString
Integer.toOctalString
Integer.toHexString
例二
public class Test{
public static void main(String args[]){
int i=100;
String binStr=Integer.toBinaryString(i);
String otcStr=Integer.toOctalString(i);
String hexStr=Integer.toHexString(i);
System.out.println(binStr);
}
例二
public class TestStringFormat {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("usage: java TestStringFormat <a number>");
System.exit(0);
}
Integer factor = Integer.valueOf(args[0]);
String s;
s = String.format("%d", factor);
System.out.println(s);
s = String.format("%x", factor);
System.out.println(s);
s = String.format("%o", factor);
System.out.println(s);
}
}
其他方法:
Integer.toHexString(你的10进制数);
例如
String temp = Integer.toHexString(75);
输出temp就为 4b
//输入一个10进制数字并把它转换成16进制
import java.io.*;
public class toHex{
public static void main(String[]args){
int input;//存放输入数据
//创建输入字符串的实例
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个的整数:");
String x=null;
try{
x=strin.readLine();
}catch(IOException ex){
ex.printStackTrace();
}
input=Integer.parseInt(x);
System.out.println ("你输入的数字是:"+input);//输出从键盘接收到的数字
System.out.println ("它的16进制是:"+Integer.toHexString(input));//用toHexString把10进制转换成16进制
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rocgege/archive/2009/02/27/3938820.aspx
java中进行二进制,八进制,十六进制,十进制间进行相互转换
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
八进制转成十进制
Integer.valueOf("876",8).toString()
二进制转十进制
Integer.valueOf("0101",2).toString()
java.lang.Integer类可以直接将2,8,16进制直接转换为10进制
Integer.parseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
examples
parseInt("0", 10) returns 0
parseInt("473", 10) returns 473
parseInt("-0", 10) returns 0
parseInt("-FF", 16) returns -255
parseInt("1100110", 2) returns 102
parseInt("2147483647", 10 ) returns 2147483647
parseInt("-2147483648", 10 ) returns -2147483648
parseInt("2147483648", 10 ) throws a NumberFormatException
parseInt("99", 8 ) throws a NumberFormatException
parseInt("Kona", 10 ) throws a NumberFormatException
parseInt("Kona", 27 ) returns 411787
进制转换如何写(二,八,十六)不用算法
Integer.toBinaryString
Integer.toOctalString
Integer.toHexString
通过xml配置文件得到数据库信息
在上例的基础上修改程序,通过xml配置文件得到数据库信息
更新程序:
-----------------------------------------------------------------------------------------------------------
当前目录下新建config.xml文件:
文件内容:
<Config>
<DBConfig>
<driver>com.pointbase.jdbc.jdbcUniversalDriver</driver> //driver信息
<url>jdbc:pointbase:server://localhost:9092/test</url> //url信息
<user>PBPUBLIC</user> //数据库user
<password>PBPUBLIC</password> //数据库password
</DBConfig>
<DBOperation>
<Select>
<SQL>select id ,name ,age ,address from test</SQL> //sql语句,用来查询
<Text>select.csv</Text> //查询结果的输出文件名
</Select>
<Insert>
<SQL>insert into test values('0011','sandy','25','shanghai')</SQL>
<Text>insert.csv</Text>
</Insert>
<Update>
<SQL>update test set address = '上海'</SQL>
<Text>update.csv</Text>
</Update>
<Delete>
<SQL>delete from test where id = '0008'</SQL>
<Text>delete.csv</Text>
</Delete>
</DBOperation>
</Config>
--------------------------------------------------------------------------------------------------------
新建一个.java文件,专门用来解析xml,这里我用的是开源的工具jdom,现在比较流行
新建文件:XmlParse.java 在同一个package内
--------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.IOException;
import java.util.HashMap;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class XmlParse {
private HashMap configTable= new HashMap();
public HashMap parseXML() throws JDOMException, IOException{
SAXBuilder builder = new SAXBuilder();
Document readDoc = builder.build("src.test/ConnectionTest/config.xml");
Element config = readDoc.getRootElement();
System.out.println(config.getName());
Element e = config.getChild("DBConfig");
HashMap dbConfig = new HashMap();
configTable.put("dbconfig_driver",e.getChildText("driver"));
configTable.put("dbconfig_url",e.getChildText("driver"));
configTable.put("dbconfig_user",e.getChildText("user"));
configTable.put("dbconfig_password",e.getChildText("password"));
HashMap dbOper = new HashMap();
e = config.getChild("DBOperation");
Element c = e.getChild("Select");
configTable.put("dboperation_selectSQL",c.getChildText("SQL"));
configTable.put("dboperation_selectText",c.getChildText("Text"));
c = e.getChild("Insert");
configTable.put("dboperation_insertSQL",c.getChildText("SQL"));
configTable.put("dboperation_insertText",c.getChildText("Text"));
c = e.getChild("Update");
configTable.put("dboperation_updateSQL",c.getChildText("SQL"));
configTable.put("dboperation_updateText",c.getChildText("Text"));
c = e.getChild("Delete");
configTable.put("dboperation_deleteSQL",c.getChildText("SQL"));
configTable.put("dboperation_deleteText",c.getChildText("Text"));
return configTable;
}
}
--------------------------------------------------------------------------------------------------------
最后是主程序修改:
--------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.BufferedWriter;
//import java.io.File;
//import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import org.jdom.JDOMException;
public class ContactTest {
private Connection conn = null;
private int flag;
private HashMap config = new HashMap(); //存放从config.xml中得到的配置信息
static final String LINE_SEPARATOR = System.getProperty("line.separator");
/*
* 增加了构造器,得到解析后的xml的配置信息列表
*/
public ContactTest() throws JDOMException, IOException{
XmlParse xml = new XmlParse();
config = xml.parseXML();
}
public void getConnection(){
try{
/*
* 修改了程序,通过从配置文件中取得数据库信息
*/
/*
File file = new File("./src/test/ConnectionTest/config.properties"); //确定你的目录路径
Properties props = new Properties();
props.load(new FileInputStream(file));
String JDBC_URL = props.getProperty("db_url");
String JDBC_DRIVER= props.getProperty("db_driver");
String USER = props.getProperty("db_user");
String PASSWORD = props.getProperty("db_password");
*/
String JDBC_URL = (String)config.get("dbconfig_url");
String JDBC_DRIVER= (String)config.get("dbconfig_driver");
String USER = (String)config.get("dbconfig_user");
String PASSWORD = (String)config.get("dbconfig_password");
Class.forName(JDBC_DRIVER).newInstance();
conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD);
System.out.println("connection success-------------");
}catch(Exception e){
e.printStackTrace();
}
}
public void closeConnection() throws SQLException{
if(this.conn != null){
conn.close();
}
}
public void getResult(int flag,Collection col) throws IOException{
String name = null;
if(flag == 0){
System.out.println("输出查询信息");
name = (String)config.get("dboperation_selectText"); //从配置中得到文件名,不再是固定文件名了
WriterOut(name,col);
}else if(flag == 1){
System.out.println("输出插入信息");
name = (String)config.get("dboperation_insertText");;
WriterOut(name,col);
}else if(flag == 2){
System.out.println("输出修改信息");
name = (String)config.get("dboperation_updateText");;
WriterOut(name,col);
}else if(flag == 3){
System.out.println("输出删除信息");
name = (String)config.get("dboperation_deleteText");;
WriterOut(name,col);
}else{
System.out.println("标志码输入错误");
}
}
public void WriterOut(String name,Collection list) throws IOException{
String path = "d:/"+name;
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
int count = list.size();
String csvData[] = new String[count];
Iterator it = list.iterator();
int i = 0;
while(it.hasNext()){
String temp = (String)it.next();
System.out.println(temp);
csvData[i] = temp;
i++;
}
for(int j = 0;j < csvData.length;j++)
{
writer.write(csvData[j] + LINE_SEPARATOR);
}
writer.close();
}
public void SelectDB(){
try{
getConnection();
Statement stmt = this.conn.createStatement();
String SQL = (String)config.get("dboperation_selectSQL");
ResultSet rs = stmt.executeQuery(SQL);
Collection col = new ArrayList(); //集合,用来存放数据库信息
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp); //
System.out.println(" ");
}
getResult(0,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void InsertDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_insertSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");;
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(1,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void UpdateDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_updateSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(2,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void DeleteDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_deleteSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(3,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void excute(int tag){
if(tag == 0){
System.out.println("进行查询操作");
SelectDB();
}else if(tag == 1){
System.out.println("进行添加操作");
InsertDB();
}else if(tag == 2){
System.out.println("进行修改操作");
UpdateDB();
}else if(tag == 3){
System.out.println("进行删除操作");
DeleteDB();
}else{
System.out.println("标志码输入错误");
}
}
public static void main(String[] args) throws JDOMException, IOException
{
ContactTest ct = new ContactTest ();
ct.flag = 0; //0-查询;1-添加;2-修改;3-删除
ct.excute(ct.flag);
}
}
为了便于你更好理解这些程序,我增加了注释,建议使用editplus来看,这样比较好区分注释
config.xml:
----------------------------------------------------------------------------------------------------------
<!----------首先是根节点<config>--------->
<Config>
<!----------然后是子节点<DBConfig>,用来存放数据库的配置信息--------->
<DBConfig>
<!-------在该节点下的第一个配置参数<dirver>:数据库驱动,<driver></driver>是标签,当中就是你的配置信息------->
<driver>com.pointbase.jdbc.jdbcUniversalDriver</driver>
<!-------在该节点下的第二个配置参数<url>:数据库url地址--------->
<url>jdbc:pointbase:server://localhost:9092/test</url>
<!-------在该节点下的第三个配置参数<user>:数据库用户名--------->
<user>PBPUBLIC</user>
<!-------在该节点下的第四个配置参数<password>:数据库密码--------->
<password>PBPUBLIC</password>
</DBConfig>
<!----------然后是子节点<DBOperation>,用来存放对数据库的操作信息,这个和<DBConfig>是同一个级别的--------->
<DBOperation>
<!-------在该节点下的第一个子节点<select>:对数据库进行select操作--------->
<Select>
<!-------在该子节点下有两个具体的配置参数--------->
<!-------配置参数<SQL>,对数据库进行select的操作的查询语句,就是将在程序中的查询语句在这里定义了------>
<SQL>select id ,name ,age ,address from test</SQL>
<!--配置参数<Text>,根据你的业务需求需要在不同的数据库操作后输出不同的文件信息,这里存放输出的文件名-->
<Text>select.csv</Text>
</Select>
<!-------在该节点下的第二个子节点<insert>:对数据库进行insert操作--------->
<Insert>
<SQL>insert into test values('0011','sandy','25','shanghai')</SQL>
<Text>insert.csv</Text>
</Insert>
<!-------在该节点下的第三个子节点<update>:对数据库进行update操作--------->
<Update>
<SQL>update test set address = '上海'</SQL>
<Text>update.csv</Text>
</Update>
<!-------在该节点下的第四个子节点<delete>:对数据库进行delete操作--------->
<Delete>
<SQL>delete from test where id = '0008'</SQL>
<Text>delete.csv</Text>
</Delete>
</DBOperation>
</Config>
XmlParse.java 增加注释:
-----------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.IOException;
import java.util.HashMap;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/*
* 对xml进行解析,从xml中拿到所有的配置信息,放在集合中,采用HashMap集合方式
* HashMap是采用key = value的方式存放的,所以可以通过对应的key值得到相应的配置信息
* 这个和xml的标签和标签内容是一一对应的,例如<user>public</user>是标签,那么在
* HashMap中这配置信息的就可以存放为,key = "user",value = "public"来存放
* 具体的参照API文档
*/
public class XmlParse {
private HashMap configTable= new HashMap(); //生成一个HashMap,用来存放所有的配置信息
/*
* 方法parseXML,具体执行解析xml文件
* 返回一个HashMap,就是将解析完成的含有配置信息的HashMap返回
*/
public HashMap parseXML() throws JDOMException, IOException{
//固定格式,先生成解析器,再建立Document
SAXBuilder builder = new SAXBuilder();
//将你要解析的xml文件导入,注意文件的路径,总是以工程文件的根目录为起点的
Document readDoc = builder.build("src.test/ConnectionTest/config.xml");
//Element为xml中元素节点,这里通过getRootElement()方法得到根节点
Element config = readDoc.getRootElement();
//通过根节点得到一个名字为"DBConfig"的子节点
Element e = config.getChild("DBConfig");
//在这个子节点下有四个具体的配置信息,我们通过e.getChildText()这个
//方法得到里面的具体的配置信息,就是<></>标签中间的部分,"driver"就是
//标签的名字
//再通过HashMap的put(key,value)的方法将这些信息保存到HashMap中
configTable.put("dbconfig_driver",e.getChildText("driver"));
configTable.put("dbconfig_url",e.getChildText("url"));
configTable.put("dbconfig_user",e.getChildText("user"));
configTable.put("dbconfig_password",e.getChildText("password"));
//再次通过根节点得到一个名字为"DBOperation"的子节点
e = config.getChild("DBOperation");
//找到该子节点下的一个名字为"Select"的子节点
Element c = e.getChild("Select");
//同样进行读取节点信息和HashMap的保存操作
configTable.put("dboperation_selectSQL",c.getChildText("SQL"));
configTable.put("dboperation_selectText",c.getChildText("Text"));
//以下同上
c = e.getChild("Insert");
configTable.put("dboperation_insertSQL",c.getChildText("SQL"));
configTable.put("dboperation_insertText",c.getChildText("Text"));
c = e.getChild("Update");
configTable.put("dboperation_updateSQL",c.getChildText("SQL"));
configTable.put("dboperation_updateText",c.getChildText("Text"));
c = e.getChild("Delete");
configTable.put("dboperation_deleteSQL",c.getChildText("SQL"));
configTable.put("dboperation_deleteText",c.getChildText("Text"));
//最后将解析完成,保存后的HashMap返回
return configTable;
}
}
ContactTest.java 增加注释:
--------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import org.jdom.JDOMException;
public class ContactTest {
private Connection conn = null; //数据库连接connection
private int flag; //标志位,判断数据库操作
private HashMap config = new HashMap(); //存放从config.xml中得到的配置信息
//常量,分行标志符,从系统中获得的
static final String LINE_SEPARATOR = System.getProperty("line.separator");
/*
* 增加了构造器,得到解析后的xml的配置信息列表
*/
public ContactTest() throws JDOMException, IOException{
XmlParse xml = new XmlParse(); //声明一个对象,解析xml配置文件
config = xml.parseXML(); //调用解析方法,将返回的HashMap结果放入config中
}
/*
* 数据库连接操作
*/
public void getConnection(){
try{
/*
* 修改了程序,通过从配置文件中取得数据库信息
* 这里是从hashmap中拿到配置信息get("dbconfig_url")这个方法
* 是从hashmap中拿出key值为dbconfig_url的value的值,因为放入
* hashmap中的key,value类型都是object的,所以拿出来的时候要转换
* 格式成String
*/
String JDBC_URL = (String)config.get("dbconfig_url");
String JDBC_DRIVER= (String)config.get("dbconfig_driver");
String USER = (String)config.get("dbconfig_user");
String PASSWORD = (String)config.get("dbconfig_password");
Class.forName(JDBC_DRIVER).newInstance();
conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD);
System.out.println("connection success-------------");
}catch(Exception e){
e.printStackTrace();
}
}
public void closeConnection() throws SQLException{
if(this.conn != null){
conn.close();
}
}
public void getResult(int flag,Collection col) throws IOException{
String name = null;
if(flag == 0){
System.out.println("输出查询信息");
//这里要定义输出文件的文件名字,我们现在也是从hashmap中拿到文件名的值
//就是你在config.xml中看到的<text></text>标签中的文件名
name = (String)config.get("dboperation_selectText");
WriterOut(name,col);
}else if(flag == 1){
System.out.println("输出插入信息");
name = (String)config.get("dboperation_insertText");;
WriterOut(name,col);
}else if(flag == 2){
System.out.println("输出修改信息");
name = (String)config.get("dboperation_updateText");;
WriterOut(name,col);
}else if(flag == 3){
System.out.println("输出删除信息");
name = (String)config.get("dboperation_deleteText");;
WriterOut(name,col);
}else{
System.out.println("标志码输入错误");
}
}
/*
* 对查询的内容进行输出,并且控制输出格式
*/
public void WriterOut(String name,Collection list) throws IOException{
String path = "d:/"+name; //输出路径
//这里定义了一个IO输出的包装器
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
int count = list.size(); //计算总共要输出几行
/*
* 修改程序,改变输出格式
*/
String csvData[] = new String[count]; //这个你要求的csv文件的数据输出的数组
Iterator it = list.iterator(); //定义一个迭代器,用来遍历集合
int i = 0;
//开始遍历集合,不断的从集合中取出纪录,直到遍历结束
while(it.hasNext()){
String temp = (String)it.next();
System.out.println(temp);
csvData[i] = temp; //将取出的纪录放入数组中
i++;
}
//将数组中的纪录通过IO包装器放到文件中
for(int j = 0;j < csvData.length;j++)
{
//需要在输出文件是修改文件格式,达到csv的文本要求
writer.write(csvData[j] + LINE_SEPARATOR);
}
writer.close();
}
public void SelectDB(){
try{
getConnection();
Statement stmt = this.conn.createStatement();
//这里的SQL语句也放到xml文件中去配置了
String SQL = (String)config.get("dboperation_selectSQL");
ResultSet rs = stmt.executeQuery(SQL);
Collection col = new ArrayList(); //集合,用来存放数据库信息
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
/*
* 这里加了些字段信息得内容,这里没有对字段的长度进行判断,所有在输出格式时会有偏差
*/
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
/*
* 新增加的语句,为了达到csv文件的输出的格式
*/
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp); //放入集合中,将一行的内容放到集合中去
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
/*
* 新增加的语句,为了达到csv文件的输出的格式
*/
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp); //放入集合中,将整合后的一行的内容放到集合中去
System.out.println(" ");
}
getResult(0,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void InsertDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_insertSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");;
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(1,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void UpdateDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_updateSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(2,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void DeleteDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_deleteSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(3,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void excute(int tag){
if(tag == 0){
System.out.println("进行查询操作");
SelectDB();
}else if(tag == 1){
System.out.println("进行添加操作");
InsertDB();
}else if(tag == 2){
System.out.println("进行修改操作");
UpdateDB();
}else if(tag == 3){
System.out.println("进行删除操作");
DeleteDB();
}else{
System.out.println("标志码输入错误");
}
}
public static void main(String[] args) throws JDOMException, IOException
{
ContactTest ct = new ContactTest ();
ct.flag = 0; //0-查询;1-添加;2-修改;3-删除
ct.excute(ct.flag);
}
}
通过从配置文件中读取数据库信息
在上例的基础上对程序进行了修改,通过从配置文件中读取数据库信息 在目录下增加config.properties文件,内容为: db_driver = com.pointbase.jdbc.jdbcUniversalDriver db_url = jdbc:pointbase:server://localhost:9092/test db_user = PBPUBLIC db_password = PBPUBLIC 格式一定要按照 key = value 的写法 ----------------------------------------------------------------------------------------------------------- 主程序: package ConnectionTest; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Properties; public class ContactTest { private Connection conn = null; private int flag; static final String LINE_SEPARATOR = System.getProperty("line.separator"); public void getConnection(){ try{ /* * 修改了程序,通过从配置文件中取得数据库信息 */ File file = new File("./src/test/ConnectionTest/config.properties"); //确定你的目录路径 Properties props = new Properties(); props.load(new FileInputStream(file)); String JDBC_URL = props.getProperty("db_url"); String JDBC_DRIVER= props.getProperty("db_driver");; String USER = props.getProperty("db_user");; String PASSWORD = props.getProperty("db_password");; Class.forName(JDBC_DRIVER).newInstance(); conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD); System.out.println("connection success"); }catch(Exception e){ e.printStackTrace(); } } public void closeConnection() throws SQLException{ if(this.conn != null){ conn.close(); } } public void getResult(int flag,Collection col) throws IOException{ String name = null; if(flag == 0){ System.out.println("输出查询信息"); name = "select.csv"; WriterOut(name,col); }else if(flag == 1){ System.out.println("输出插入信息"); name = "insert.csv"; WriterOut(name,col); }else if(flag == 2){ System.out.println("输出修改信息"); name = "update.csv"; WriterOut(name,col); }else if(flag == 3){ System.out.println("输出删除信息"); name = "delete.csv"; WriterOut(name,col); }else{ System.out.println("标志码输入错误"); } } public void WriterOut(String name,Collection list) throws IOException{ String path = "d:/"+name; BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path))); int count = list.size(); String csvData[] = new String[count]; Iterator it = list.iterator(); int i = 0; while(it.hasNext()){ String temp = (String)it.next(); System.out.println(temp); csvData[i] = temp; i++; } for(int j = 0;j < csvData.length;j++) { writer.write(csvData[j] + LINE_SEPARATOR); } writer.close(); } public void SelectDB(){ try{ getConnection(); Statement stmt = this.conn.createStatement(); String SQL = "select id ,name ,age ,address from test"; ResultSet rs = stmt.executeQuery(SQL); Collection col = new ArrayList(); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); // System.out.println(" "); } getResult(0,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void InsertDB(){ try{ getConnection(); String SQL = "insert into test values('0011','sandy','25','shanghai')"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); System.out.println(" "); } getResult(1,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void UpdateDB(){ try{ getConnection(); String SQL = "update test set address = '上海'"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); System.out.println(" "); } getResult(2,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void DeleteDB(){ try{ getConnection(); String SQL = "delete from test where id = '0008'"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); System.out.println(" "); } getResult(3,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void excute(int tag){ if(tag == 0){ System.out.println("进行查询操作"); SelectDB(); }else if(tag == 1){ System.out.println("进行添加操作"); InsertDB(); }else if(tag == 2){ System.out.println("进行修改操作"); UpdateDB(); }else if(tag == 3){ System.out.println("进行删除操作"); DeleteDB(); }else{ System.out.println("标志码输入错误"); } } public static void main(String[] args) { ContactTest ct = new ContactTest (); ct.flag = 0; //0-查询;1-添加;2-修改;3-删除 ct.excute(ct.flag); } }
txt文档全部替换成csv文档
package ConnectionTest; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class ContactTest { private Connection conn = null; private int flag; static final String LINE_SEPARATOR = System.getProperty("line.separator"); public void getConnection(){ try{ String JDBC_URL = "jdbc:pointbase:server://localhost:9092/test"; String JDBC_DRIVER="com.pointbase.jdbc.jdbcUniversalDriver"; String USER = "PBPUBLIC"; String PASSWORD = "PBPUBLIC"; Class.forName(JDBC_DRIVER).newInstance(); conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD); System.out.println("connection success"); }catch(Exception e){ e.printStackTrace(); } } public void closeConnection() throws SQLException{ if(this.conn != null){ conn.close(); } } public void getResult(int flag,Collection col) throws IOException{ String name = null; if(flag == 0){ System.out.println("输出查询信息"); name = "select.csv"; WriterOut(name,col); }else if(flag == 1){ System.out.println("输出插入信息"); name = "insert.csv"; WriterOut(name,col); }else if(flag == 2){ System.out.println("输出修改信息"); name = "update.csv"; WriterOut(name,col); }else if(flag == 3){ System.out.println("输出删除信息"); name = "delete.csv"; WriterOut(name,col); }else{ System.out.println("标志码输入错误"); } } public void WriterOut(String name,Collection list) throws IOException{ String path = "d:/"+name; BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path))); int count = list.size(); String csvData[] = new String[count]; Iterator it = list.iterator(); int i = 0; while(it.hasNext()){ String temp = (String)it.next(); System.out.println(temp); csvData[i] = temp; i++; } for(int j = 0;j < csvData.length;j++) { writer.write(csvData[j] + LINE_SEPARATOR); } writer.close(); } public void SelectDB(){ try{ getConnection(); Statement stmt = this.conn.createStatement(); String SQL = "select id ,name ,age ,address from test"; ResultSet rs = stmt.executeQuery(SQL); Collection col = new ArrayList(); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); // System.out.println(" "); } getResult(0,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void InsertDB(){ try{ getConnection(); String SQL = "insert into test values('0011','sandy','25','shanghai')"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); System.out.println(" "); } getResult(1,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void UpdateDB(){ try{ getConnection(); String SQL = "update test set address = '上海'"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); System.out.println(" "); } getResult(2,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void DeleteDB(){ try{ getConnection(); String SQL = "delete from test where id = '0008'"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); if(j == count){ temp = temp + ss.getColumnName(j); }else{ temp = temp + ss.getColumnName(j)+","; } } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); if(i == count){ temp = temp + "\""+ rs.getString(i) + "\""; }else{ temp = temp + "\""+ rs.getString(i) + "\","; } } col.add(temp); System.out.println(" "); } getResult(3,col); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void excute(int tag){ if(tag == 0){ System.out.println("进行查询操作"); SelectDB(); }else if(tag == 1){ System.out.println("进行添加操作"); InsertDB(); }else if(tag == 2){ System.out.println("进行修改操作"); UpdateDB(); }else if(tag == 3){ System.out.println("进行删除操作"); DeleteDB(); }else{ System.out.println("标志码输入错误"); } } public static void main(String[] args) { ContactTest ct = new ContactTest (); ct.flag = 3; //0-查询;1-添加;2-修改;3-删除 ct.excute(ct.flag); } }
数据库得到的信息选择性的放到不同的txt
增加对文件的操作--将从数据库得到的信息选择性的放到不同的txt文件中 package ConnectionTest; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class ContactTest { private Connection conn = null; private int flag; public void getConnection(){ try{ String JDBC_URL = "jdbc:pointbase:server://localhost:9092/test"; String JDBC_DRIVER="com.pointbase.jdbc.jdbcUniversalDriver"; String USER = "PBPUBLIC"; String PASSWORD = "PBPUBLIC"; Class.forName(JDBC_DRIVER).newInstance(); conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD); System.out.println("connection success"); }catch(Exception e){ e.printStackTrace(); } } public void closeConnection() throws SQLException{ if(this.conn != null){ conn.close(); } } public void getResult(int flag,Collection col) throws IOException{ String name = null; if(flag == 0){ System.out.println("输出查询信息"); name = "select.txt"; WriterOut(name,col); }else if(flag == 1){ System.out.println("输出插入信息"); name = "insert.txt"; WriterOut(name,col); }else if(flag == 2){ System.out.println("输出修改信息"); name = "update.txt"; WriterOut(name,col); }else if(flag == 3){ System.out.println("输出删除信息"); name = "delete.txt"; WriterOut(name,col); }else{ System.out.println("标志码输入错误"); } } public void WriterOut(String name,Collection list) throws IOException{ String path = "d:/"+name; File newFile = new File(path); //这里注意你的输入文件的路径 BufferedWriter wirter = new BufferedWriter(new FileWriter(newFile)); Iterator it = list.iterator(); while(it.hasNext()){ String temp = (String)it.next(); System.out.println(temp); wirter.newLine(); wirter.write(temp); wirter.flush(); } wirter.close(); } public void SelectDB(){ try{ getConnection(); Statement stmt = this.conn.createStatement(); String SQL = "select id ,name ,age ,address from test"; ResultSet rs = stmt.executeQuery(SQL); Collection col = new ArrayList(); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); temp = temp + ss.getColumnName(j)+" "; } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); temp = temp + rs.getString(i)+" "; } col.add(temp); // System.out.println(" "); } getResult(0,col); rs.close(); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void InsertDB(){ try{ getConnection(); String SQL = "insert into test values('0011','sandy','25','shanghai')"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); this.conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); temp = temp + ss.getColumnName(j)+" "; } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); temp = temp + rs.getString(i)+" "; } col.add(temp); System.out.println(" "); } getResult(1,col); rs.close(); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void UpdateDB(){ try{ getConnection(); String SQL = "update test set address = '上海'"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); this.conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); temp = temp + ss.getColumnName(j)+" "; } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); temp = temp + rs.getString(i)+" "; } col.add(temp); System.out.println(" "); } getResult(2,col); rs.close(); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void DeleteDB(){ try{ getConnection(); String SQL = "delete from test where id = '0008'"; PreparedStatement pstmt = this.conn.prepareStatement(SQL); ResultSet rs = pstmt.executeQuery(); this.conn.commit(); SQL = "select id ,name ,age ,address from test"; Statement stmt = this.conn.createStatement(); rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); Collection col = new ArrayList(); String temp = ""; for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); temp = temp + ss.getColumnName(j)+" "; } col.add(temp); System.out.println(" "); while(rs.next()){ temp = ""; for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); temp = temp + rs.getString(i)+" "; } col.add(temp); System.out.println(" "); } getResult(3,col); rs.close(); closeConnection(); }catch(Exception e){ e.printStackTrace(); } } public void excute(int tag){ if(tag == 0){ System.out.println("进行查询操作"); SelectDB(); }else if(tag == 1){ System.out.println("进行添加操作"); InsertDB(); }else if(tag == 2){ System.out.println("进行修改操作"); UpdateDB(); }else if(tag == 3){ System.out.println("进行删除操作"); DeleteDB(); }else{ System.out.println("标志码输入错误"); } } public static void main(String[] args) { ContactTest ct = new ContactTest (); ct.flag = 3; //0-查询;1-添加;2-修改;3-删除 ct.excute(ct.flag); } }
jdbc连接数据库
使用jdbc连接数据库--通过jdbc连接数据库,将SQL语句运行结果打印到控制台 package ConnectionTest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; public class ContactTest { private Connection conn = null; public void getConnection(){ try{ String JDBC_URL = "jdbc:pointbase:server://localhost:9092/test"; String JDBC_DRIVER="com.pointbase.jdbc.jdbcUniversalDriver"; String USER = "PBPUBLIC"; String PASSWORD = "PBPUBLIC"; Class.forName(JDBC_DRIVER).newInstance(); conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD); System.out.println("connection success"); }catch(Exception e){ e.printStackTrace(); } } public void excute(){ try{ Statement stmt = this.conn.createStatement(); String SQL = "select id ,name ,age ,address from test"; ResultSet rs = stmt.executeQuery(SQL); ResultSetMetaData ss = rs.getMetaData(); int count = ss.getColumnCount(); for(int j = 1; j <= count; j++){ System.out.print(ss.getColumnName(j)+" "); } System.out.println(" "); while(rs.next()){ for (int i = 1; i <= count;i++){ System.out.print(rs.getString(i)+" "); } System.out.println(" "); } rs.close(); stmt.close(); this.conn.close(); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) { ContactTest ct = new ContactTest (); ct.getConnection(); ct.excute(); } }
mssql数据库常识
在SQL查询中:from后最多可以跟多少张表或视图:256
在SQL语句中出现Order by,查询时,先排序,后取
在SQL中,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。
SQLServer2000同步复制技术实现步骤
一、 预备工作
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户(SynUser)
2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限
--确定
3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名(SynUser)
--"密码"中输入该用户的密码
4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
企业管理器
--右键SQL实例--属性
--安全性--身份验证
--选择"SQL Server 和 Windows"
--确定
5.在发布服务器和订阅服务器上互相注册
企业管理器
--右键SQL Server组
--新建SQL Server注册...
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
--下一步--连接使用,选择第二个"SQL Server身份验证"
--下一步--输入用户名和密码(SynUser)
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成
6.对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施中没用到)
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号
二、 正式配置
1、配置发布服务器
打开企业管理器,在发布服务器(B、C、D)上执行以下步骤:
(1)从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己)
(3) [下一步] 设置快照文件夹
采用默认\\servername\Pub
(4) [下一步] 自定义配置
可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置
否,使用下列默认设置(推荐)
(5) [下一步] 设置分发数据库名称和位置 采用默认值
(6) [下一步] 启用发布服务器 选择作为发布的服务器
(7) [下一步] 选择需要发布的数据库和发布类型
(8) [下一步] 选择注册订阅服务器
(9) [下一步] 完成配置
2、创建出版物
发布服务器B、C、D上
(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
(2)选择要创建出版物的数据库,然后单击[创建发布]
(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
SQLSERVER允许在不同的数据库如 oracle或ACCESS之间进行数据复制。
但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器
(5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表
(6)选择发布名称和描述
(7)自定义发布属性 向导提供的选择:
是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
否 根据指定方式创建发布 (建议采用自定义的方式)
(8)[下一步] 选择筛选发布的方式
(9)[下一步] 可以选择是否允许匿名订阅
1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器
方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 中添加
否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅
如果仍然需要匿名订阅则用以下解决办法
[企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅
2)如果选择匿名订阅,则配置订阅服务器时不会出现以上提示
(10)[下一步] 设置快照 代理程序调度
(11)[下一步] 完成配置
当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库
有数据
srv1.库名..author有字段:id,name,phone,
srv2.库名..author有字段:id,name,telphone,adress
要求:
srv1.库名..author增加记录则srv1.库名..author记录增加
srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新
--*/
--大致的处理步骤
--1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步
exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip'
exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码'
go
--2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动
。我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动
go
--然后创建一个作业定时调用上面的同步处理存储过程就行了
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句: exec p_process
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行
设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
--3.实现同步处理的方法2,定时同步
--在srv1中创建如下的同步处理存储过程
create proc p_process
as
--更新修改过的数据
update b set name=i.name,telphone=i.telphone
from srv2.库名.dbo.author b,author i
where b.id=i.id and
(b.name <> i.name or b.telphone <> i.telphone)
--插入新增的数据
insert srv2.库名.dbo.author(id,name,telphone)
select id,name,telphone from author i
where not exists(
select * from srv2.库名.dbo.author where id=i.id)
--删除已经删除的数据(如果需要的话)
delete b
from srv2.库名.dbo.author b
where not exists(
select * from author where id=b.id)
go