我正在尝试读取文本文件并在 SQL SERVER 数据库中创建表,但是在执行此操作时出现错误 null,所以我应该使用不同类型的 SQL 语句来执行吗?或者是Resultset和dmd.geTables的问题,对此给出一些想法和建议。
请右键单击并查看图像以获得清晰的视图。
我的文本文件:
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);
}
}
}