2

我正在尝试读取文本文件并在 SQL SERVER 数据库中创建表,但是在执行此操作时出现错误 null,所以我应该使用不同类型的 SQL 语句来执行吗?或者是Resultset和dmd.geTables的问题,对此给出一些想法和建议。

O/P 错误消息看起来像

请右键单击并查看图像以获得清晰的视图。

我的文本文件:

COLUMN_NAME COLUMN_TYPE IS_NULLABLE COLUMN_KEY  COLUMN_DEFAULT  EXTRA   
FirstName   VARCHAR(20) NO  
LastName    VARCHAR(20) NO  
Gender  VARCHAR(20) NO  
Address VARCHAR(20) NO  
PhoneNo VARCHAR(50) NO  
Email   VARCHAR(50) NO  
DOB     VARCHAR(20) NO  
Occupation  VARCHAR(50) NO  
Password    VARCHAR(30) YES 

到目前为止的代码:

import java.io.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class Stackq extends AbstractTableModel {

Vector<String> data;
Vector columns;

public Stackq() {






    String line;
    data = new Vector<String>();
    columns = new Vector();
    int count = 0;


    try {
        FileInputStream fis = new FileInputStream("V:/Jimmy/text/registration.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        StringTokenizer st1 = new StringTokenizer(br.readLine(), "\t");
        while (st1.hasMoreTokens()) {
            columns.addElement(st1.nextToken());
            count++;
        }
        while ((line = br.readLine()) != null) {
            StringTokenizer st2 = new StringTokenizer(line, "\t");
            for (int i = 0; i < count; i++) {
                if (st2.hasMoreTokens()) {
                    data.addElement(st2.nextToken());
                } else {
                    data.addElement("");
                }
            }
        }
        br.close();
     } catch (Exception e) {
        e.printStackTrace();
     }
    }

  public void setValueAt(Object value, int row, int col) {
    data.setElementAt((String) value, col);
    fireTableCellUpdated(row, col);
  }

  public boolean isCellEditable(int row, int col) {
    //if (4 == col){

    return true;
  }
 //else {
 // return false;
 // }
 //}

 //public void insertData(Object[] values){
 // data.add(new Vector());
 //for(int i =0; i<values.length; i++){
 //((Vector) data.get(data.size()-1)).add(values[i]);
 //}
 //fireTableDataChanged();
 // }
  public void removeRow(int row) {
    data.removeElementAt(row);
    fireTableDataChanged();
   }

  public int getRowCount() {
    return data.size() / getColumnCount();
  }

  public int getColumnCount() {
    return columns.size();
  }

public Object getValueAt(int rowIndex, int columnIndex) {
    return (String) data.elementAt((rowIndex * getColumnCount())
            + columnIndex);
}

public String getColumnName(int i) {
    return (String) columns.get(i);
}

public static void main(String args[]) {


    Stackq model = new Stackq();

    JTable table = new JTable();

    table.setModel(model);
    JScrollPane scrollpane = new JScrollPane(table);
    JPanel panel = new JPanel();
    panel.add(scrollpane);
    JFrame frame = new JFrame();
    frame.add(panel, "Center");
    frame.pack();
    frame.setVisible(true);

    StringBuffer sbTableData = new StringBuffer();
    for (int row = 0; row < table.getRowCount(); row++) {
        for (int column = 0; column < table.getColumnCount(); column++) {
            sbTableData.append(table.getValueAt(row, column)).append("\t");
        }
        sbTableData.append("\n");

    }
    System.out.println(sbTableData);

    try {

        PrintWriter f = new PrintWriter(new BufferedWriter(new FileWriter("V:/Jimmy /text/registration6.txt", true)));

        f.println(sbTableData+"\t");

        f.close();


    } catch (IOException e) {
        e.printStackTrace();
    }
    String readstr1 = null;

    int row = table.getRowCount();

    int column = table.getColumnCount();

    for (int j = 0; j < row; j++) {

        for (int i = 0; i < column; i++) {

         //System.out.println(table.getValueAt(j, i));
            readstr1 = (String) table.getValueAt(j, i);
        //System.out.println(readstr);

        }

    }
    try
    {

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        java.sql.Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost\\sqlexpress;databaseName=EMPLOYEE;integratedSecurity=true;");

    FileInputStream fstr = new FileInputStream("V:/Jimmy/text/registration6.txt");
    // Get the object of DataInputStream
    DataInputStream inn = new DataInputStream(fstr);
    BufferedReader brr = new BufferedReader(new InputStreamReader(inn));

        String readstr;
        java.sql.DatabaseMetaData dmd = conn.getMetaData();
        ResultSet rs = dmd.getTables(null,"EMPLOYEE","examplea",null);
        while ((readstr = brr.readLine()) != null)
            //DatabaseMetaData dmd = (DatabaseMetaData) conn.getMetaData();
        //while(readstr!=null)
        {
            //ResultSet rs = dmd.getTables(null, "EMPLOYEE", "example11199", null);
            //set not null column
            if (String.valueOf(readstr).contains("NO")) {
                readstr = readstr.replaceAll("NO", "not null");
            } else if (String.valueOf(readstr).contains("YES")) {
                readstr = readstr.replaceAll("YES", "");
            }
            if (String.valueOf(readstr).contains("PRIMARY")) {
                readstr = readstr.replaceFirst("PRIMARY", "primary key");

            }

   System.out.println("replace string " + readstr);
        }

    try
    {



        // FILE READ AND TABLE CREATE
        String tname = "examplea";
        String dbname = "migrationdb";
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        java.sql.Connection conn1 =  DriverManager.getConnection("jdbc:sqlserver://localhost\\sqlexpress;databaseName=EMPLOYEE;integratedSecurity=true;");
        java.sql.Statement stmt = conn1.createStatement();
        // stmt=conn.createStatement();
        //System.out.println(readstr1);

  try
  {
   System.out.println("Table creation in process");

            if (!rs.next()) 
            {
                stmt.executeUpdate("CREATE TABLE " + tname + "("+readstr+")");
      System.out.println("connect");

            } else {
                //System.out.println(readstr);
                stmt.executeUpdate("ALTER TABLE " + tname + " ADD("+readstr+")");
                System.out.println("altered");

            }

   brr.close();
   conn.close();
   conn1.close();
   stmt.close();
   rs.close();


    } catch (Exception e) {
        System.out.println(""+e);   //Error Statement is Printed Here
    }

    } catch (Exception e) {

   System.out.println(e);
    }
    } catch (Exception e) {

System.out.println(e);
    }

   }
   }
4

0 回答 0