今天终于把一个新闻发布的jsp程序运行成功了,本来这个程序在几天前就已经写好了的,但是由于以前用的是access,现在换成了sql2000,结果问题一大堆
首先就是jdbc连接数据库的问题,我定义的标如下
ID //新闻标识
title //新闻标题
content //新闻内容
times //时间
keyw //关键字
author //作者
我的连接数据库的javabean如下
package petnews;
import java.sql.*;
public class connpet {
String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pet";
String user="user";
String password="pass";
Connection connect = null;
ResultSet rs = null;
public connpet()
{
try
{
Class.forName(sDBDriver);
}
catch(ClassNotFoundException e)
{
System.err.println(e.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
try
{
connect = DriverManager.getConnection(url, user,password);
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql)
{
int result = 0;
try
{
connect = DriverManager.getConnection(url, user,password);
Statement stmt = connect.createStatement();
result = stmt.executeUpdate(sql);
}
catch(SQLException e)
{
System.err.println(e.getMessage());
}
return result;
}
}
开始我的createStatement没用其默认设置,用的是createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
结果一直导致操纵数据库出错,光这个错误就让我费了很大的神,然后我在删除数据库数据时开始用的是
delete * from news where id = .......,可编译的时候老是报错,说*附近有语法错误,由于我的数据库操作不熟练,后来才知道原来delete不能用*,还有就是在插入数据的时候,我开始把数据字段进行了标志,结果出错了,对于一个标志字段,插入的方法是不一样的,然后就是几个常用函数,比如在access里取系统时间用的是date(),可在sql里就要用getdate(),看来数据库的知识真得很重要,不然编程的时候可要吃大亏。
记得一位师兄说得好,“不要把数据库想成很简单的东西,它里面有很多东西,有时一个操作系统就可以是一个数据库,数据库可以用在很多方面,不然甲骨文公司拿什么吃饭” ,
综上我总结了一下我的问题
1 在createstatement使用默认参数就行了,不然可能导致无法操纵数据库,如进行添加删除
2删除时delete后不能跟*,
3对标识字段的插入不能直接用insert into values()
4最后就是别把几个数据库各自的函数搞混了,晕