| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:数据库程序再错,求教求教!
只看楼主 加入收藏
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:6 
数据库程序再错,求教求教!
我发现我快崩溃了,照着写两个数据库方面的程序都不成功,下面是程序源码:
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)
实在看不懂了,这个程序实在没什么问题啊,为什么输出的还是乱码呢?
搜索更多相关主题的帖子: 数据库 
2010-08-30 20:58
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:10 
CloneNotSupportedException异常:
当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。

第30行代码:
test.clone();
这个是干嘛的?你要复制test对象?但DoUpdateTest类没有实现Cloneable的接口
2010-08-30 22:11
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:0 
回复 2楼 shellingford
笔误笔误,呵呵,应该是要完成con.close(),关闭连接对象

还有一个问题就是输出的结果为什么会出现???这样的乱码呢?
2010-08-30 22:29
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:0 
以下是引用huxiangwenhu在2010-8-30 22:29:08的发言:

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

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


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

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

你的sql server是否是中文版的?如果是,一般默认安装都是采用中文字符集的,那么可以直接查看数据表中的字段,采用nvarchar类型而不要用varchar类型。
如果不是,那么搜一下如何修改sql server字符集,改为支持中文的。
2010-08-30 23:34
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

是这个地方改吗?能帮我详细解释下吗?
2010-09-01 21:34
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:0 
回复 5楼 huxiangwenhu
你还是先试试把表字段的类型改成nvarchar试试吧
2010-09-01 21:42
syg5434
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:山沟沟
等 级:版主
威 望:10
帖 子:285
专家分:781
注 册:2010-2-28
收藏
得分:10 
输出结果是乱码和在数据库内显示乱码不是一回事,
如果在数据库内是乱码,可心改一下数据库的编码;如果输出的中文是乱码,一般是程序里的编码问题或者是编译软件的编码设置问题
既然能从数据库查出数据出来,就说明数据库没有问题,应该是后面那种情况。
建议改一下软件编码,如gbk,utf-8

不要迷恋哥,嫂子会揍你。阿-弥-陀-佛--!
2010-09-02 09:20
快速回复:数据库程序再错,求教求教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018911 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved