package database_wenjian;import java.io.IOException;
import java.util.ArrayList;public class RWMain {
public static void main(String[] args) {
Read read = new Read(); try {
read.Read("E:\\shenjinwei.txt");
RW_Main rwread = new RW_Main(read.M, read.com);
System.out.print("it is work!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package database_wenjian;import java.sql.*;
import java.util.ArrayList;public class RW_Main {
public RW_Main(ArrayList M,Company com) {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://169.254.66.229:1433;databasename=task", "sa", "sa");
PreparedStatement ps = con.prepareStatement("insert into tb_company1(id,name,business,address) values(?,?,?,?)");
for(int i=1;i<=M.size();i++){
ps.setString(1, com.id);
ps.setString(2, com.n);
ps.setString(3, com.b);
ps.setString(4, com.a);

ps.addBatch();
}
ps.executeBatch();



ps.close();

con.close();
System.out.println("connect success!");



} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 通过驱动来获得一个连接
 catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}package database_wenjian;import java.io.*;
import java.util.ArrayList;public class Read {
public void  Read(String url) throws IOException{
BufferedReader wj=new BufferedReader(new FileReader(url));
     s=wj.readLine();
     Company com=new Company();//查错原因是此处把所有行内容直接加到as上了,空格没用,赋值没用???????
      while(s!=null){//但是M对象也有三个元素,就是全部为空??????
      char[] t=s.toCharArray();//这个位置原本想用数组,判断空位来实现实际输入
          for(int i=0;i<t.length;){
          int j=1;//此处是为了实现轮流添加各项元素
         
          if(equals(t[i] )){
          i++;
         
          }
          else if(!equals(t[i] )){
          as+=t[i];
          i++;
          }
          addcom_ys(j,as);
          }
          M.add(com);//封装输入//此处能否动态添加?
          s=wj.readLine();
     
      }
      }
     public void addcom_ys(int j,String as){//封装赋值
      switch(j){
      case 1:
      com.addid(as);
      j++;   break;
      case 2:
          com.addname(as);
          j++;   break;
      case 3:
      com.addbusiness(as);
      j++;   break;
      case 4:
      com.addadress(as);
      j=1;   break;
      
     }
     } ArrayList<Company> M=new ArrayList<Company>();Company com=new Company();String  s;
String  as="";
int j;
}
package database_wenjian;public class Company {
public void company(String id,String  n,String  b,String  a){
id=id;
n=n;
b=b;
a=a;

}
public void addid(String id){
id=id;
}
public void addname(String  n){
n=n;
}
public void addbusiness(String b){
b=b;
}
public void addadress(String  a){
 a= a;
}

public String getid(){
return id=this.id;
}
public String getname(){
return n=this.n;
}
public String getbusiness(){
return b=this.b;
}
public String getadress(){
return a=this.a;
}


String id;
String  n;
String  b;
String  a;
}
运行的结果在数据库中值总是为空,对象个数倒是正确,debug 检查as中的内容是txt文档的读取内容,但是后面赋值给company时,company中id,name,business,address的值全部为空

解决方案 »

  1.   

    这是数据挖掘的一个代码,我听同学说可以把String中神马地方设置为空格为间断,就可以自动将读取值给下一个,但是我不知道用哪个方法
    我的txt文档内容:
    10   sjw  IT           shanghai
    11   wy   xiaoshou     beijing
    12   lmx  wuliu        xian
    读取时as内容:10   sjw  IT           shanghai11   wy   xiaoshou     beijing12   lmx  wuliu        xian
    就是com中的id,name.....值全部是null
      

  2.   

    就是这个,
    String[] tokens = "11 wy xiaoshou beijing".splite(" ");
    你需要将你上面的大段程序改成这个。
      

  3.   

    不是字符串分割的问题吧,楼主的问题是不是为什么取不出来数据?这么多代码,懒着去读了,你从入口debug一下,看看哪里把数据弄丢了!
      

  4.   

    自己debug一下吧,关键是看哪一步把只给丢的,代码不长。
      

  5.   

    还有就是不要用 a= a
    要用this.a = a
    a定义成private
      

  6.   

    数据就丢在as后面,我的源代码预计是空格为分界,赋值给下一个com.name......随后调用addcom_ys(int j,String as)方法,用j变量标记4次赋值之后,轮回到下一个com赋值,
          但是问题就在这里,我debug检查,com里的属性值全部为空;我估计是ArrayList M,中我new com时,是不是局部变量,什吗问题的,值就没有传过去
      

  7.   

    package database_wenjian;import java.io.*;
    import java.util.ArrayList;public class Read {
    public void  Read(String url) throws IOException{
        BufferedReader wj=new BufferedReader(new FileReader(url));
         s=wj.readLine();
         Company com=new Company();
             while(s!=null){
                 char[] t=s.toCharArray();
                 for(int i=0;i<t.length;){
                     int j=1;                 if(equals(t[i] )){
                         i++;                 }
                     else if(!equals(t[i] )){
                         as+=t[i];
                         i++;
                     }
                     addcom_ys(j,as);//as用过后没有置空(id="11" name=id+name....) 
                 }
                     M.add(com);//list的所有项目对应同一个Company
                     s=wj.readLine();         }
             }
         public void addcom_ys(int j,String as){
             switch(j){
                 case 1:
                     com.addid(as);
                     j++;   break;
                 case 2:
                     com.addname(as);
                     j++;   break;
                 case 3:
                     com.addbusiness(as);
                     j++;   break;
                 case 4:
                     com.addadress(as);
                     j=1;   break;     }
         }ArrayList<Company> M=new ArrayList<Company>();Company com=new Company();//从未改过
    String  s;
    String  as="";
    int j;
    }
      

  8.   

    11楼的,你说的我听明白了,貌似就是这个问题,但是我想动态添加com对象,不知道怎嘛弄,
      

  9.   

    哥哥们,问题貌似就是这个问题,但是怎嘛解决,我原本是想动态添加com对象,不知道怎嘛弄.
    我市新手,刚刚学java
      

  10.   

    楼主看看这个:public class Read {
    public List Read(String url) throws IOException{
        BufferedReader wj=new BufferedReader(new FileReader(url));
        ArrayList<Company> M=new ArrayList<Company>();
        String s;
        while((s=wj.readLine())!=null){
                 Company com=new Company();
                 String[] fields = s.split(" ");
                 com.addid(fields[0]);
                 com.addname(fields[1]);
                 com.addbusiness(fields[2]);
                 com.addadress(fields[3]);
                 M.add(com);
         }  
         return M;      
    }