这是Javadoc
void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException
将指定参数设置为给定的输入流,这将是 具有指定的字节数。当一个非常大的ASCII值 输入
LONGVARCHAR
参数,发送它可能更实际 通过java.io.InputStream
。将根据需要从流中读取数据 直到达到文件结尾。 JDBC驱动程序将执行任何必要的操作 从ASCII转换为数据库char格式。
我知道InputStream
对象是什么。但是我仍然不明白为什么我们set
这个int paramaterindex
呢?该方法什么都不返回。它会创建一个对象吗?它改变了什么?任何人都可以用简单的语言解释它吗?
它有以下几行
PreparedStatement pstmtFld = conFld.prepareStatement(insertTable); ... pstmtFld.setAsciiStream(1, dataStream, -1); // What is purpose of this line ??? pstmtFld.executeUpdate();
答案 0 :(得分:2)
正如它所说,当您将一些非常大的数据放入数据库字段时,您可以使用此方法。它通过网络将数据流式传输到数据库中,而不是一次性将整个值加载到内存中,这可能会浪费内存。
所以你会像这样使用它:
FileInputStream fis = new FileInputStream("huge-file.txt");
BufferedInputStream dataStream = new BufferedInputStream(fis);
pstmtFld.setAsciiStream(1, dataStream, -1);
答案 1 :(得分:2)
但是我仍然不明白为什么我们将这个int paramaterindex设置为它呢?
parameterIndex是您在UPDATE或INSERT语句中放置的?
的索引。从1开始。
该方法什么都不返回。
setter很少这样做。
是否会创建一个对象?
我想它可能,但它没有。
它改变了什么?
没有AFAIK。它是一个二传手。
有人可以用简单的词语解释它吗?
假设您有ASCII文本,它会设置参数。例如如果您的第一个参数是您要将文本存储为8位字符的位置,则可以使用setAsciiText(1,input,-1)
BTW它与此API的其他方法非常相似。我建议你看一下这些比较。