数据库程序再错,求教求教!
我发现我快崩溃了,照着写两个数据库方面的程序都不成功,下面是程序源码: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(),关闭连接对象
还有一个问题就是输出的结果为什么会出现???这样的乱码呢?
笔误笔误,呵呵,应该是要完成con.close(),关闭连接对象
还有一个问题就是输出的结果为什么会出现???这样的乱码呢?
通常是编码问题,虽然我个人觉得sql server对中文支持的很好啊…………
首先检查一下数据库内的数据是否出现???
如果数据库内正常,就需要检查编码,
你的sql server是否是中文版的?如果是,一般默认安装都是采用中文字符集的,那么可以直接查看数据表中的字段,采用nvarchar类型而不要用varchar类型。
如果不是,那么搜一下如何修改sql server字符集,改为支持中文的。
----------------解决方案--------------------------------------------------------
是这个地方改吗?能帮我详细解释下吗?
----------------解决方案--------------------------------------------------------
回复 5楼 huxiangwenhu
你还是先试试把表字段的类型改成nvarchar试试吧 ----------------解决方案--------------------------------------------------------
输出结果是乱码和在数据库内显示乱码不是一回事,
如果在数据库内是乱码,可心改一下数据库的编码;如果输出的中文是乱码,一般是程序里的编码问题或者是编译软件的编码设置问题
既然能从数据库查出数据出来,就说明数据库没有问题,应该是后面那种情况。
建议改一下软件编码,如gbk,utf-8
----------------解决方案--------------------------------------------------------