我有一个平面文件,我使用SSIS将数据导入数据库.当SSIS失败时,它只是报告特定列导入失败.但更确切地说,我想知道平面文件中哪一行发生了错误,以便我可以知道在平面文件中搜索的位置.
示例: 考虑一个平面文件,其中包含以下列名称,年龄,日期.假设该文件有100行.但是如果SSIS在某一行失败,那么在处理列Date时会说80.我收到的错误是,
"组件"派生列"(19)"失败,因为发生错误代码0xC0049063,并且"输出列"DATE"(33)"上的错误行处置指定错误失败. 通过这个我能够理解列日期有一些非数字值.但是如何知道SSIS哪条线路失败(在这种情况下它是线路:88)
我必须知道这个,因为我有大文件,所以我无法理解解析时错误的来源.
任何人都可以告诉我"Derived Column"(19)中的19是什么,以及"DATE"(33)中的33是"我在错误中得到的".

我有一张像上面这样的桌子.最初除按钮列以外的所有单元格都不可编辑.我使用自定义创建了表TableModel.我isCellEditable的自定义TableModel看起来像这样:
public boolean isCellEditable(int rowIndex, int columnIndex) {
//System.out.println("isCellEditable: " + rowIndex + " " + columnIndex);
if(getColumnClass(columnIndex) == JButton.class)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我单击每行的"编辑"按钮时,JDialog将弹出该行(通过JTable在此对话框中仅构建一行来构建一个.)我可以更新此JDialog表中的单元格值.然后在该行的相应单元格中更新它们.

只有当我的isCellEditable返回为true时,我才能在此处更新后成功更新主表的行.但这不应该发生.只有当我点击它然后我应该能够isCellEditable将行更改为可编辑和更新,然后使其不可编辑.
我看过以下帖子但无法实现.
我有来自UI的服务器调用.它的响应时间有点高.所以我想在从服务器加载数据时显示进度条.我已尝试使用此方法的以下代码来显示进度条.一些我做错的地方当我calculateResult()按下按钮点击方法时,我没有看到进度条.我无需在进度条上显示任何百分比.它只需要显示数据正在加载.
//我试过以下代码
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class MyProgressBarTest extends JFrame {
private static final long serialVersionUID = 1L;
private static JProgressBar progressBar;
public static void main(String[] args) {
MyProgressBarTest obj = new MyProgressBarTest();
obj.createGUI();
}
public void createGUI() {
JPanel panel = new JPanel();
JButton button = new JButton("Progress");
progressBar = new JProgressBar();
button.addActionListener(new ActionListener() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 例如,我有一个日期存储为VARCHAR(yyyy-mm-dd)的SQLite数据库'2013-01-25'.我的查询从表中检索记录并将其显示为存储.我需要VARCHAR在JTable"2013年1月25日星期五"中显示数据.我怀疑使用setCellRenderer作为包含VARCHAR的列是可行的方法.此外,我认为这将是一个两步过程:首先,将VARCHAR转换为日期值,然后根据需要格式化日期.如果我从中获取VARCHAR值JTable并在以下位置显示它,我可以这样做JTextField:
MyDate = new SimpleDateFormat("yyyy-MM-dd").parse(rs.getString("My_Date"));
Run Code Online (Sandbox Code Playgroud)
然后根据需要格式化它
MyDateStr = new SimpleDateFormat("EEEE MMMM d, yyyy").format(MyDate);
Run Code Online (Sandbox Code Playgroud)
这一切都很好,也很好; 但是,我需要JTable列中的格式化显示.我从未使用过setCellRenderer,所以我可以使用一些帮助入门.
当我从DB2获取结果并尝试设置此属性时,noOfLocations我收到以下错误.
Method "setNoOfLocations" with signature "(Ljava/lang/Integer;)V" is not applicable on this object
Run Code Online (Sandbox Code Playgroud)
以下代码显示了问题.
我正在使用rs来设置值.
packDO.setNoOfLocations(rs.getInt("NO_LOC_PKG"));
Run Code Online (Sandbox Code Playgroud)
和
rs.getInt("NO_LOC_PKG") is returning 0
Run Code Online (Sandbox Code Playgroud)
和
NO_LOC_PKG is of datatype Integer in the DB
Run Code Online (Sandbox Code Playgroud)
和 noOfLocationssetter方法类型是,
private Integer noOfLocations;
public void setNoOfLocations(Integer noOfLocations) {
this.noOfLocations = noOfLocations;
}
Run Code Online (Sandbox Code Playgroud) main(){
Integer i1 = 500;
Integer i2 = 500;
System.out.println(i1 == i2); // O/P is "**false**"
String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2); // O/P is "**true**"
} // End of main.
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么输出不同.据我所知s1,s2将指向堆上的同一个对象.所以他们的参考地址是一样的.同样地,我认为整数也是一样的.但事实并非如此.它为什么不同?
SSCCE之后显示从服务器获取记录(比如说).ExecutorService用于创建ThreadPool2个线程,我用Timeout3秒调用所有这些线程.故意我做了一些失败的任务.
现在我的问题是,如何让EmpID的任务失败?
MainClass:
public class MultiThreadEx {
public static void main(String[] args) {
String[] empIDArray = {
"100", "200", "300", "400", "500",
"600", "700", "800", "900", "1000",
"1100", "1200", "1300", "1400", "1500"
};
List<ThreadTaskEach> taskList = new ArrayList<ThreadTaskEach>();
try {
for(String empID : empIDArray) {
taskList.add(new ThreadTaskEach(empID));
}
} catch(Exception e) {
System.out.println("Exception occured: " + e.getMessage());
}
List<Future<Map<String, String>>> futureList = null;
try {
ExecutorService service = Executors.newFixedThreadPool(2);
futureList = service.invokeAll(taskList, 3, …Run Code Online (Sandbox Code Playgroud) 我试图解决以下问题.但无法提出正确的解决方案
鉴于两个字符串说xyz和abc.找到可以用这两个字符串形成的所有字符串.一个约束是每个字符串中的字符序列应保持不变.
例子:
xyabzc - Valid
xabcyz - Valid
abcxyz - Valid
xyzacb - Invalid. (b cannot come before c)
Run Code Online (Sandbox Code Playgroud)
我试过以下,
将两个字符串连接成一个新字符串.获得字符串的所有排列并删除不遵循上述约束的那个.我知道这很模糊,但这是我提出的唯一解决方案.
请建议一个更好的方法.
目前我有两张桌子说Table-A, Table-B.我的任务是将行从Table-A拖到Table-B或将Table-B中的行拖到自身上.使用TransferHandler我已经完成了这项任务.但我的问题是,我无法识别从哪个表行被拖动到Table-B...即,从表-A到表-B或从表-B到自身.在exportData方法中TransferHandler我将一些额外的数据添加到其中一个列.基于此,当我通过importData方法导入数据时,我能够找出使用我添加数据的特定列来自哪个表.我知道这根本没有被推荐..所以我需要知道是否有一个很好的方法来解决这个问题?
我正在为这个基本Pong-style游戏而努力,但我在这个GUI方面遇到了一些困难.基本上我有一个JFrame叫做窗户,里面有一切东西,还有一个JPanel叫做内容.内容应该是指ContentPanel我所拥有的.这是我到目前为止的源代码(对不起,它很长,很多都与游戏完全相关,而不是这个问题,但我不确定我需要哪些部分源代码才能使我的问题有意义):
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
public class Pong extends JApplet {
public static void main(String[] args) {
JFrame window = new JFrame("Pong: The Game of Champions");
JPanel content = new JPanel();
window.setContentPane(content);
window.setSize(1000,600);
window.setLocation(100,100);
window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
window.setVisible(true);
window.setResizable(false);
JMenuBar settings = new JMenuBar();
ButtonHandler listener = new ButtonHandler();
window.setJMenuBar(settings);
JMenu toolsMenu = new JMenu("Settings");
settings.add(toolsMenu);
JMenuItem preferences = new JMenuItem("Preferences");
JMenuItem about = new JMenuItem("About"); …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么要使用异常.假设我有一个程序,
(不使用try/catch)
public class ExceptionExample {
private static String str;
public static void main(String[] args) {
System.out.println(str.length());
}
Run Code Online (Sandbox Code Playgroud)
我有例外
Exception in thread "main" java.lang.NullPointerException
at com.Hello.ExceptionExample.ExceptionExample.main(ExceptionExample.java:22)
Run Code Online (Sandbox Code Playgroud)
现在使用try/catch,
public class ExceptionExample {
private static String str;
public static void main(String[] args) {
try {
System.out.println(str.length());
} catch(NullPointerException npe) {
npe.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
}
我得到了例外,
java.lang.NullPointerException
at com.Hello.ExceptionExample.ExceptionExample.main(ExceptionExample.java:9)
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,
在这两种情况下,我都打印了相同的信息.那么使用try/catch有什么用呢?和
捕获异常后我们可以做些什么,在这种情况下我打印了堆栈跟踪.catch是否仅用于打印跟踪或使用getMessage()或getClass()查找异常详细信息?
我试图将列宽设置为列名的长度.我的问题是,我无法设置它.当我使用以下代码时,表格变得像这样,
tableA.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(int i = 0; i < tableA.getColumnCount(); i++) {
int columnLength = (modelA.getColumnName(i)).length();
tableA.getColumnModel().getColumn(i).setPreferredWidth(columnLength);
// tableA.getColumnModel().getColumn(i).setMinWidth(columnLength);
// tableA.getColumnModel().getColumn(i).setMaxWidth(columnLength);
}
Run Code Online (Sandbox Code Playgroud)
我从表模型中正确获取列长度.
当我使用上面的代码时,表格会像这样包装,

我无法理解我做错了什么.