搞了几天,看了不少别人的操作我什么 都试过了但是 我的数据库和myEclipse还是不能很好的操作中文数据。不过我用了一下的方法我能够对数据库随心所欲的操纵了,我也没有改我的数据库。因为我一改我的配置文件的话乱码更多了。下面就是我的代码了,希望有高手能给我指点一些更好的方法。
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class sahg {
public static void main(String args[]){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "INSERT INTO note(title,author,content) VALUES(?,?,?)" ;
try {
Class.forName("com.mysql.jdbc.Driver");
conn =
DriverManager.getConnection("jdbc:mysql://localhost/mydata?" +
"user=root&password=123");
pstmt = conn.prepareStatement(sql);
try {
pstmt.setString(1,new String("你好".getBytes("gb2312"),"ISO-8859-1")) ;//这里就是我采用的方法将其转换,呵呵。没方法我真的被逼这么做的。
pstmt.setString(2,new String("欢迎光临".getBytes("gb2312"),"ISO-8859-1"));
pstmt.setString(3,new String("分享学习经验".getBytes("gb2312"),"ISO-8859-1")) ;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
pstmt.executeUpdate() ;
}catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) {
rs = null;
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException sqlEx) {
pstmt = null;
}
}
if(conn != null){
try{
conn.close();
}catch (SQLException sqlEx) {
conn = null;
}
}
}
}
}
添加,更改,和删除是差不多的我就不说了。
还有就是查询时候显示数据我用的是那样的反方法 呵呵,如下
try
{
Class.forName("com.mysql.jdbc.Driver") ;
conn = DriverManager.getConnection("jdbc:mysql://localhost/mydata?" +
"user=root&password=123") ;
pstmt = conn.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
while(rs.next())
{
i++ ;
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容
int id = rs.getInt(1) ;
String title = new String( rs.getString(2).getBytes("ISO-8859-1"),"gb2312");//后面的gb2312可以要也可以像下面的一样都没有什么影响。
String author = new String(rs.getString(3).getBytes("ISO-8859-1"));
String content = new String(rs.getString(4).getBytes("ISO-8859-1"));
}
将其打印就是和原来一样的文字了,原来是中文的就不会有乱码了。