运行环境:
ubuntu 7.04
jdk 6
netbeans 5.5代码:
//连接字符串
Class.forName("com.mysql.jdbc.Driver");
Connection cnn=
DriverManager.getConnection ("jdbc:mysql://localhost/ph?useUnicode=true&characterEncoding=gb2312", "root", ""); //生成插入的Statement
protected PreparedStatement getInsertCommand(Object[] args) throws SQLException {
CallabledStatement cmd=cnn.prepareCall("CALL SP_TYPES_INSERT(?, ?)");
//PreparedStatement cmd=cnn.prepareStatement("Insert into types (id, name) values (?, ?)");
cmd.setInt(1, (Integer)args[0]);
cmd.setString(2, (String)args[1]);
return cmd;
} //执行SQL语句
PreparedStatement cmdInsert=getInsertCommand(args);
cmdInsert.execute();问题 :getInsertCommand中,如果使用储存过程,参数中如果带有中文,会提示一下错误:
java.sql.SQLException: Incorrect string value: '\xCB\xD5\xBF\xCB' for column 'P_NAME' at row 1如果直接使用SQL语句,就没有问题。
附上MYSQL的储存过程:
DELIMITER $$DROP PROCEDURE IF EXISTS `SP_TYPES_INSERT$$
CREATE PROCEDURE `SP_TYPES_INSERT` (
P_ID INT,
P_NAME VARCHAR(80)
)
BEGIN
INSERT INTO types (`ID`, NAME) VALUES (P_ID, P_NAME);
END$$DELIMITER ;
ubuntu 7.04
jdk 6
netbeans 5.5代码:
//连接字符串
Class.forName("com.mysql.jdbc.Driver");
Connection cnn=
DriverManager.getConnection ("jdbc:mysql://localhost/ph?useUnicode=true&characterEncoding=gb2312", "root", ""); //生成插入的Statement
protected PreparedStatement getInsertCommand(Object[] args) throws SQLException {
CallabledStatement cmd=cnn.prepareCall("CALL SP_TYPES_INSERT(?, ?)");
//PreparedStatement cmd=cnn.prepareStatement("Insert into types (id, name) values (?, ?)");
cmd.setInt(1, (Integer)args[0]);
cmd.setString(2, (String)args[1]);
return cmd;
} //执行SQL语句
PreparedStatement cmdInsert=getInsertCommand(args);
cmdInsert.execute();问题 :getInsertCommand中,如果使用储存过程,参数中如果带有中文,会提示一下错误:
java.sql.SQLException: Incorrect string value: '\xCB\xD5\xBF\xCB' for column 'P_NAME' at row 1如果直接使用SQL语句,就没有问题。
附上MYSQL的储存过程:
DELIMITER $$DROP PROCEDURE IF EXISTS `SP_TYPES_INSERT$$
CREATE PROCEDURE `SP_TYPES_INSERT` (
P_ID INT,
P_NAME VARCHAR(80)
)
BEGIN
INSERT INTO types (`ID`, NAME) VALUES (P_ID, P_NAME);
END$$DELIMITER ;
解决方案 »
- 为什么不能用java来执行wget命令
- QT如何获取用户在QLineEdit的输入
- java初手请教环境变量的问题
- 从文本中取得的中文显示为??
- 请问同一个Timer启动两个schedule和建立两个Timer各自启动一个schedule有什么区别?哪种更好
- crash-safe 是什么
- 我要在applet的textField中判断enter键的keyPressed,请问是怎么样写的阿,急!!help
- 这么用java写一个发送邮件服务器
- 在JVM未结束前缓冲流的flush方法无效,是什么将其阻塞
- 重写equals()方法
- 关于java swing 与 spring Hibernate整合框架下开发的疑问
- 石头近来看下(oxfordxyc)求助关于学生学习管理系统,高人也来
已经试过直接执行储存过程,但是问题依旧:
Class.forName("com.mysql.jdbc.Driver");
Connection cnn=DriverManager.getConnection ("jdbc:mysql://localhost/ph?useUnicode=true&characterEncoding=gb2312", "root", ""); CallableStatement cmd=cnn.prepareCall("CALL SP_TYPES_INSERT(?, ?)");
cmd.setInt(1, 11);
cmd.setString(2, "中文");
cmd.execute();
cmd.close();
cnn.close();
P_IDINT,
P_NAME VARCHAR(80) character set gb2312
)
BEGIN
INSERT INTO types (`ID`, NAME) VALUES (P_ID, P_NAME);
END$$