使用PreparedStatement的setString方法会自动在数据库相应表项后面补空格解决办法
2017-11-14 15:22
627 查看
使用PreparedStatement的setString方法会自动在数据库相应表项后面补空格解决办法
原创 2013年10月03日19:20:27
标签:
数据库 /
sql /
java /
Preparedment /
产生空格
1910
数据库表的数据项如果设置为char、verchar类型,使用PreparedStatement向表中插入字符串数据时,数据会自动在后面添加空格,解决的办法是将数据项类型设置为nverchar。
[java] view
plain copy
package Example;
import java.sql.*;
public class MyIcon
{
private Connection con;
public void getConnection()
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
try {
con = DriverManager.getConnection("jdbc:odbc:MySqlTable", "sa", "");
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public void showTable()
{
try {
PreparedStatement sql = con.prepareStatement("select * from student");
ResultSet result = sql.executeQuery();
while(result.next())
{
System.out.print("id:" + result.getString(1));
System.out.print(", name:" + result.getString(2));
System.out.print(", sex:" + result.getString(3));
System.out.println(", birthday:" + result.getString(4));
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public void insertTable()
{
try {
PreparedStatement sql = con.prepareStatement("insert into student values(?, ?, ?, ?)");
sql.setInt(1, 25);
sql.setString(2, "张一");
sql.setString(3, "女");
sql.setString(4, "2012-12-01");
sql.executeUpdate();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void main (String []args)
{
MyIcon icon = new MyIcon();
icon.getConnection();
System.out.println("修改前:");
icon.showTable();
icon.insertTable();
System.out.println("插入后:");
icon.showTable();
}
}
运行结果:
id:18, name:张三, sex:女, birthday:2012-12-02//表中已存在的数据
id:23, name:李某, sex:女, birthday:1999-10-20//表中已存在的数据
id:24, name:张一, sex:女, birthday:2002-12-01//表中已存在的数据
id:25, name:张一 , sex:女, birthday:2012-12-01 //插入的数据,其中name设置为verchar有空格,sex设置nverchar输出没有空格
相关文章推荐
- 使用PreparedStatement的setString方法会自动在数据库相应表项后面补空格解决
- sql: 去除数据库表中tab、空格、回车符等特殊字符的解决方法 去除tab、空格、回车符等使用replace语句 按照ASCII码, SELECT char(64) 例如64 对应 @,则se
- java 中JFinal getModel方法和数据库使用出现问题解决办法
- R.id或者R.layout等等在使用时后面无法找找相应空间或者布局问题的解决办法
- Hibernate的方法获取对象后,对象调用set后会自动更新数据库内容的解决办法
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- VC6.0下不能自动完成类方法和属性的解决办法(vc6无法使用代码自动完成)
- java 中JFinal getModel方法和数据库使用出现问题解决办法
- Asp.Net使用Jmail方法及问题解决办法
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- 使用fckeditor中遇到的几个问题及其相应解决方法
- 转摘--MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
- ACCESS中使用GUID全局唯一标识符的自动唯一编号[同步复制ID]之解决方法
- 转帖:MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
- IBatisNet使用方法(三)与数据库的简单交互相应的类
- ARX二次开发中使用DAO方式访问数据库,导致AutoCAD2004及以上版本退出时报错的解决方法
- ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载)
- 安装VS2005后,使用sqlcmd连接数据库出错的解决方法(转载)
- Intellij IDEA 编译时报“使用过时方法”的解决办法
- 使用WebBrowser打开Powerpoint时只自动显示前两页的解决办法