这两天晚上在帮同学把调查问卷网站给弄到网上去,虽然只有简简单单的四个页面,非常小的一个jsp站点,但由于是自己第一次发布,问题碰到的挺多的。
1、以前也大概了解过一点点发布的东西,知道要用到ftp上传,但是对于如何上传数据库就很有疑问了,这次发布很好的解答了这些疑问,原来是用到数据库本身的一个管理工具——sql server management studio,这个是2008版的。由于我一直延续了学数据库时候的习惯(用2000版),所以中间还花了点时间对数据库进行了升级,中间又出现了好多的问题,主要是说我没有安装这个没有安装那个。不过最后还是给搞好了,O(∩_∩)O~言归正传吧!用这个管理工具登陆的时候,用申请到的空间分配给你的服务器名、用户名和密码连接到空间的数据库里。里面应该有你的数据库了,我申请的是用数据库名就是用户名,找到属于你的数据库的时候,再把你的数据库导入就可以咯!
在导入的过程中还出现了个小小的差错,就是数据库导入过程中,主键丢失掉。根据空间给的建议是先在源数据库把数据库结构的sql脚本导出,然后在目标数据库中执行sql脚本,最后再把导入数据。
2、其次,花了很多力气解决的是数据库连接问题。唉……说来说去还是自己数据库版本太低了,人家都升级到2008了,我还鸵鸟似的在用2000版。所以数据库驱动语句也用的不一样。还好借助强大的网络,在网友的帮助下解决了,下面就是2005版与2000版的区别,2008版用2005版的没有问题。
问题描述:[SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知
解决方法: 下载sql 2005 驱动:
http://www.microsoft.com/downloads/details.aspx?FamilyID=E22BC83B-32FF-4474-A44A-22B6AE2C4E17&displaylang=zh-cn修改1:
-
Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 version
- Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 version
修改2:
-
Connection con = DriverManager.getConnection( "jdbc:sqlserver://<ServerName>;user=<UserName>;password=<Password>");//2005 version
-
Connection con = DriverManager.getConnection( "jdbc:microsoft:sqlserver://<ServerName>;user=<UserName>;password=<Password>");//2000 version
参考链接:http://support.microsoft.com/?scid=kb%3Ben-us%3B915834&x=15&y=16
将驱动修改对后,插入数据库没有任何问题了,可把我开心坏了。嘿嘿……可是问题又冒出来了,在查询数据库的时候同样的问题又出现了。刚开始还以为自己把代码写错了,在再三确认无误后,真是纳闷+郁闷哪?问题到底出在哪里呢?实在说不通哇!都可以插入数据库了说明这个驱动是可以用的,就是说查询不行。最后在对照后,或许是中直觉吧!就把下面语句的参数给删了。
Statement stmt=connWeb.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
神奇的事情发生了,最后ok了。O(∩_∩)O~ 但当然事实上,问题的症结我还没有找到,这两个参数分别表示
第一个参数可以取值为
ResultSet.RTYPE_FORWORD_ONLY,只可向前滚动;
ResultSet.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
ResultSet.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据。
第二个参数可以取值为
ResultSet.CONCUR_READ_ONLY:这是缺省值,指定不可以更新 ResultSet
ResultSet.CONCUR_UPDATABLE:指定可以更新 ResultSet