当前位置: 代码迷 >> Java相关 >> 数据库程序再错,求教求教!
  详细解决方案

数据库程序再错,求教求教!

热度:93   发布时间:2010-08-30 20:58:31.0
数据库程序再错,求教求教!
我发现我快崩溃了,照着写两个数据库方面的程序都不成功,下面是程序源码:
package fouth;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

public class DoUpdateTest {

    private Connection con;
    public static void main(String[] args) {        
        DoUpdateTest test =new DoUpdateTest();
        Connection con=test.getConnection();
        try{
            Statement st=con.createStatement();
            String sql="insert into student values('张丽','20021023','1978-6-10','英语','山东')";
            st.executeUpdate(sql);
            System.out.println("执行修改前的记录");
            test.getStudent(con);
            System.out.println("执行修改后的记录");
            sql="update student set 姓名='张萧远' where 姓名='王成'";
            st.executeUpdate(sql);
            test.getStudent(con);
            System.out.println("执行删除后的记录");
            sql="delete student where 姓名='张丽'";
            st.executeUpdate(sql);
            test.getStudent(con);
            st.close();
            test.clone();
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
    private void getStudent(Connection con2) {
        try{
            Statement st=con.createStatement();
            String sql="select * from student";
            ResultSet rs=st.executeQuery(sql);
            while(rs.next()){
                String name=rs.getString("姓名");
                String number=rs.getString("学号");
                Date date=rs.getDate("出生日期");
                String spe=rs.getString("专业");
                String address=rs.getString("籍贯");
                System.out.println("\n姓名:"+name+"\t学号:"+number+
                        "\t出生日期:"+date+"\t专业:"+spe+"\t籍贯:"+address);
            }
            st.close();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        
    }
    private Connection getConnection() {
        try{
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            con=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubs","sa","");
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return con;
    }

}
出现了一下问题:
执行修改前的记录

姓名:??????    学号:20021022    出生日期:1977-06-07    专业:????    籍贯:??±±

姓名:????    学号:20021023    出生日期:1978-06-10    专业:????    籍贯:????
执行修改后的记录

姓名:??????    学号:20021022    出生日期:1977-06-07    专业:????    籍贯:??±±

姓名:????    学号:20021023    出生日期:1978-06-10    专业:????    籍贯:????
执行删除后的记录

姓名:??????    学号:20021022    出生日期:1977-06-07    专业:????    籍贯:??±±
java.lang.CloneNotSupportedException: fouth.DoUpdateTest
    at java.lang.Object.clone(Native Method)
    at fouth.DoUpdateTest.main(DoUpdateTest.java:30)
实在看不懂了,这个程序实在没什么问题啊,为什么输出的还是乱码呢?
搜索更多相关的解决方案: 数据库  

----------------解决方案--------------------------------------------------------
CloneNotSupportedException异常:
当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。

第30行代码:
test.clone();
这个是干嘛的?你要复制test对象?但DoUpdateTest类没有实现Cloneable的接口
----------------解决方案--------------------------------------------------------
回复 2楼 shellingford
笔误笔误,呵呵,应该是要完成con.close(),关闭连接对象

还有一个问题就是输出的结果为什么会出现???这样的乱码呢?
----------------解决方案--------------------------------------------------------
以下是引用huxiangwenhu在2010-8-30 22:29:08的发言:

笔误笔误,呵呵,应该是要完成con.close(),关闭连接对象

还有一个问题就是输出的结果为什么会出现???这样的乱码呢?


通常是编码问题,虽然我个人觉得sql server对中文支持的很好啊…………

首先检查一下数据库内的数据是否出现???
如果数据库内正常,就需要检查编码,

你的sql server是否是中文版的?如果是,一般默认安装都是采用中文字符集的,那么可以直接查看数据表中的字段,采用nvarchar类型而不要用varchar类型。
如果不是,那么搜一下如何修改sql server字符集,改为支持中文的。
----------------解决方案--------------------------------------------------------

是这个地方改吗?能帮我详细解释下吗?
----------------解决方案--------------------------------------------------------
回复 5楼 huxiangwenhu
你还是先试试把表字段的类型改成nvarchar试试吧
----------------解决方案--------------------------------------------------------
输出结果是乱码和在数据库内显示乱码不是一回事,
如果在数据库内是乱码,可心改一下数据库的编码;如果输出的中文是乱码,一般是程序里的编码问题或者是编译软件的编码设置问题
既然能从数据库查出数据出来,就说明数据库没有问题,应该是后面那种情况。
建议改一下软件编码,如gbk,utf-8

----------------解决方案--------------------------------------------------------
  相关解决方案