??xml version="1.0" encoding="utf-8" standalone="yes"?> q个Ҏ(gu)在oracle 数据库中q行正常Q但是换到MS SQL中就?x)报?/p>
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last 解决办法是:(x) Statement变量要按照如下设|:(x) stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 或:(x) Statement stmt = conn.createStatementResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 但这样做是将游标Ud最后一条记录的位置比较耗时Q少量的记录不太明显。以下是试的记录:(x) 1Q用COUNT函数Ҏ(gu)Q该Ҏ(gu)是在查询中通过SQL的统计函数COUNT来统计查询的记录数?q样的错误?/font>
2Q用ResultSet.last()Ҏ(gu)?
3Q环境ؓ(f)XPQSQL SERVER 2000,JAVA
4Q记录数Q?00000?
5Q结果:(x)COUNTҎ(gu)用时270毫秒QResultSet.last()Ҏ(gu)用时31846毫秒,大约32U?
q个l果大家是不是大吃一惊?br />
原文地址 http://blog.csdn.net/yoyo_yaya/archive/2007/01/29/1497112.aspx
]]>
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class mysqlceshi {
public static void main(String para[]){
Connection conn=null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/hospital","root","sa");
System.out.println("234");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("SELECT COUNT(*) FROM administrator");
System.out.println("24356");
} catch(Exception ex){
System.out.println(ex);
}
}
}
先说一下提交的面Qsmartuploadlg要求用字节流的方式来提交<FORM action="upload.jsp" encType=multipart/form-data method=post>。下面就是个例子upload.htmQ?/font>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0057)http://localhost:8080/jspsmartfile/jsp/uploadTemplate.jsp -->
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY bgColor=#e6e6e6><BR>
<FORM action="upload.jsp" encType=multipart/form-data method=post>
<TABLE>
<TBODY>
<TR>
<TD><FONT color=#000000 face=helv,helvetica size=1> File
: </FONT> <INPUT size=60 type=file name="file"></TD></TR>
<TR>
<TR>
<TD><FONT color=#000000 face=helv,helvetica size=1> File
: </FONT> <INPUT size=60 type=file name="file1"></TD></TR>
<TR>
<TD><FONT color=#000000 face=helv,helvetica size=1> File
: </FONT> <INPUT size=60 type=text name="text"></TD></TR>
<TR>
<TD
align=right><INPUT type=submit value=Send name="send"></TD></TR></TBODY></TABLE></FORM></BODY></HTML>
再来看一下接收的面 Q我们把文g上传到服务器以后q接把它再存入数据库中Qupload.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
//?/u>例化上蝲bean
com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
//?/u>始化
mySmartUpload.initialize(pageContext);
//?/u>|上载的最大?br> mySmartUpload.setMaxFileSize(500 * 1024*1024);
//?/u>载文?br> mySmartUpload.upload();
//?/u>环取得所有上载的文g
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
//?/u>得上载的文g
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
if (!myFile.isMissing())
{
//?/u>得上载的文g的文件名
String myFileName=myFile.getFileName();
//?/u>得不带后~的文件名
String suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
//?/u>得后~?br> String ext= mySmartUpload.getFiles().getFile(0).getFileExt();
//?/u>得文件的大小
int fileSize=myFile.getSize();
//?/u>存\?br> String aa=getServletContext().getRealPath("/")+"jsp\\";
String trace=aa+myFileName;
//?/u>得别的参?br> String explain=(String)mySmartUpload.getRequest().getParameter("text");
String send=(String)mySmartUpload.getRequest().getParameter("send");
//?/u>文g保存在服务器?
myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
//?/u>面的是将上蝲的文件保存到数据库中
//?/u>文gd中
java.io.File file = new java.io.File(trace);
java.io.FileInputStream fis = new java.io.FileInputStream(file);
out.println(file.length());
//?/u>开数据?br> ResultSet result=null;
String mSql=null;
PreparedStatement prestmt=null;
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
DbaObj.OpenConnection();
//?/u>文g写到数据库中
mSql="insert into marklist (markname,password,marksize,markdate,MarkBody) values (?,?,?,?,?)";
prestmt =DbaObj.Conn.prepareStatement(mSql);
prestmt.setString(1, "aaa1");
prestmt.setString(2, "0000");
prestmt.setInt(3, fileSize);
prestmt.setString(4, DbaObj.GetDateTime());
prestmt.setBinaryStream(5,fis,(int)file.length());
DbaObj.Conn.setAutoCommit(true) ;
prestmt.executeUpdate();
DbaObj.Conn.commit();
out.println(("上蝲成功Q!Q?).toString());
}
else
{ out.println(("上蝲p|Q!Q?).toString()); }
}//与前面的if对应
%>
再说一下下载,下蝲分两U情?。从数据库直接下?。从服务器上下蝲
先说从数据库直接下蝲的情形:(x)是把输入流从数据库里读出来Q然后{存ؓ(f)文g
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
int bytesum=0;
int byteread=0;
//?/u>开数据?br> ResultSet result=null;
String Sql=null;
PreparedStatement prestmt=null;
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
DbaObj.OpenConnection();
//?/u>得数据库中的数据
Sql="select * from t_local_zhongzhuan ";
result=DbaObj.ExecuteQuery(Sql);
result.next();
//?/u>数据库中的数据读到流?
InputStream inStream=result.getBinaryStream("content");
FileOutputStream fs=new FileOutputStream( "c:/dffdsafd.doc");
byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
%>
再说从服务器上下载的情ŞQ?/font>
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<%
String fileName = "zsc104.swf".toString();
//?/u>到流?br>InputStream inStream=new FileInputStream("c:/zsc104.swf");
//?/u>|输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
//?/u>环取出流中的数据
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
inStream.close();
%>
好了Q到q里只要不是太大的文件的上传下蝲的操作都可以完成了?/font>
摘自Q?a >http://dev.csdn.net/develop/article/18/18987.shtm<script LANGUAGE="JavaScript">
var isNav = (navigator.appName.indexOf("Netscape") !=-1);
function showSelection(){
if (window.getSelection) {
alert(window.getSelection());
document.forms[0].selectedText.value=window.getSelection();
} else if (document.getSelection) {
alert(document.getSelection());
document.forms[0].selectedText.value=document.getSelection();
} else if (document.selection) {
alert(document.selection.createRange().text);
document.forms[0].selectedText.value=document.selection.createRange().text;
}
}
if (isNav) {
document.captureEvents(Event.MOUSEUP);
}
document.onmouseup = showSelection;
</script>
</head>
<body>
<P>
q些都是用来试的文本,(zhn)可以用鼠标来选中Q然后试一试选择文本后生的l构?br></P>
<form name="dataholder">
<textarea name="selectedText" rows = 3 cols=40 wrap="virtusl">
</textarea>
</form>
</body>
Tuser user=new Tuser();
user.setName("gxc");
Transaction tx=session.beginTransaction();
session.save(user); 自由态变为持久?/p>
tx.commit();
Transaction tx2=session.beginTransaction();
session.delete(user); 持久态变为游L?/p>
tx2.commit();
建立一个工E后Q写一D代码:(x)
<%@ page language="java" import="java.sql.*,java.lang.*" contentType="text/html;charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
This is my JSP page. <br>
<% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=gxc";
String user="sa";
String password="sa";
Connection conn= DriverManager.getConnection(url,user,password);
System.out.println("lianjie ok");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("lianjiehou ok");
String sql="select * from b1";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
(zhn)的W一个字D内容ؓ(f)Q?lt;%=rs.getString(1)%>
(zhn)的W二个字D内容ؓ(f)Q?lt;%=rs.getString(2)%>
<%}
%>
</body>
</html>
要将三个sql包烤到tomcat下的lib?/strong>?/p>
]]>
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
public class table extends JFrame implements ActionListener{
Object a[][];
Object b[]={"name","password"};
Container con;
JButton button;
String name,password;
public table(){
a=new Object[30][2];
JTable table=new JTable(a,b);
table.setSize(300,300);
button=new JButton("chaxun");
button.addActionListener(this);
con=getContentPane();
con.add(table,BorderLayout.CENTER);
con.add(button,BorderLayout.SOUTH);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// TODO 自动生成Ҏ(gu)存根
if(e.getSource()==button){
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=gxc";
String user="sa";
String password="sa";
Statement stmt=null;
ResultSet result=null;
Connection dbConn =null;
int i=0;
try {
Class.forName(driverName);
} catch (ClassNotFoundException e1) {
// TODO 自动生成 catch ?br> e1.printStackTrace();
}
try {
dbConn = DriverManager.getConnection(url, user, password);
stmt=dbConn.createStatement();
String sql="select * from b1";
result =stmt.executeQuery(sql);
while(result.next())
{
name=result.getString(1);
password=result.getString(2);
a[i][0]=name;
a[i][1]=password;
i++;
}
repaint();
dbConn.close();
} catch (SQLException e1) {
// TODO 自动生成 catch ?br> e1.printStackTrace();
}
}
}
public static void main(String para[]){
table table=new table();
}
}