问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jdbc如何创建存储过程

发布网友 发布时间:2022-05-03 02:51

我来回答

3个回答

懂视网 时间:2022-05-03 07:13

 

 

查看数据库字符集

SHOW VARIABLES LIKE ‘character_set%‘;

技术图片

 

 

 看到客户端连接数据库返回集都支持了utf8mb4

方案2更改服务器配置

这里网上有好多解决方案,直接配置数据库服务器的启动参数支持utf8mb4,做个demo还可以,测试环境多个部门共用一个mysql实例,更改配置的话所有的字符集都会更改;线上环境也不可行:阿里云的字符集是在新建实例的时候配置的,只能重建然后迁移数据

方案3让MySQL自动转换

还有一个现象是,使用datagrip是可以直接插入表情的,也就是可以在不更改服务器配置的情况下从客户端设置,或者直接发送表情让mysql自己识别

 连接直接设置utf8,

 shardingsphere:
 datasource:
 names: master
 # 数据源
 master:
 type: com.alibaba.druid.pool.DruidDataSource
 driverClassName: com.mysql.jdbc.Driver
 url: jdbc:mysql://rm-xxx.mysql.rds.aliyuncs.com/db?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8&serverTimezone=Asia/Shanghai
 username: u
 password: p

然后用接口直接把utf8传表情过去

报错:

chUpdateException: Incorrect string value: ‘xF0x9Fx98x82xF0x9F...‘ for column ‘msg_content‘ at row 1                  
 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89) ~[spring-jdbc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]        
 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]        
 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE] 

 然后网上搜到这个https://blog.csdn.net/FHGFHFYUUGY/article/details/90292139

 

参考 connector-j-reference-charset 可以看到如果程序要插入 utf8mb4 字符, 需要满足以下条件:

Connector/J 5.1.47 及以上版本:
 1. 指定 characterEncoding 参数为 UTF8/UTF-8 即可, 新版本直接映射到 utf8mb4 编码;
 2. 如果 connectionCollation 指定的排序规则不是 utf8mb4 相关的, 则 characterEncoding 参数会重写为排序规则对应的编码;

Connector/J 5.1.47 以下版本:
 1. 设置 MySQL 参数变量 character_set_server=utf8mb4;
 2. 指定 characterEncoding 参数为 UTF8/UTF-8, jdbc 程序会进行探测是否使用 utf8mb4;

 和mysql连接器版本有关,从上面保存日志看到现在使用的是5.0.4,而我们的character_set_server=utf8,所以把连接器升级到5.1.47就可以 了

 <!-- Use MySQL Connector-J -->
 <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.47</version>
 </dependency>

注意更改5.1.47的默认时区

保存表情成功:技术图片

 

一次JDBC支持表情存储的配置过程

标签:url   启动参数   tor   translate   com   class   release   convert   tran   

热心网友 时间:2022-05-03 04:21

//创建存储过程,记住关闭对象 

import java.sql.CallableStatement; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class UseSQLDataBase3 { 
Connection con; 
Statement state; 
ResultSet rs; 
CallableStatement cs;//调用存储过程使用的接口 
String url = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=test"; 
String user = "sa"; 
String password = ""; 
public void connectSQL(){ 

   try { 
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
   } catch (ClassNotFoundException e) { 
    // TODO 自动生成 catch 块 
    e.printStackTrace(); 
   } 
  
   try { 
    con = DriverManager.getConnection(url, user, password); 
    state = con.createStatement(); 
   
   
    //创建存储过程SQL语句 
    String createProcere = " create procere SHOW_SUPPLIERS " + 
      "as "+ 
      " select SUPPLIERS.SUP_NAME,COFFEES.COF_NAME "+ 
      "from suppliers,coffees"+ 
      "where suppliers.sup_id = coffees.sup_id "+ 
      "order by sup_name"; 
    //创建存储过程 
    state.executeUpdate("USE TEST"); 
    state.executeUpdate(createProcere); 
   
    //调用存储过程 
    cs = con.prepareCall("{call SHOW_SUPPLIERS}");//创建一个 CallableStatement 对象来调用数据库存储过程 
    //返回调用的结果集 
    rs = cs.executeQuery(); 
   
    //输出结果 
    System.out.println("SUPPLIERS.SUP_NAME            COFFEES.COF_NAME"); 
    while(rs.next()){ 
     String sup_name = rs.getString(1); 
     String coffees_name = rs.getString(2); 
     System.out.println(sup_name + "      " + coffees_name); 
    } 
    con.close(); 
    state.close();   
   } catch (SQLException e) { 
    // TODO 自动生成 catch 块 
    e.printStackTrace(); 
   } 
  
}

热心网友 时间:2022-05-03 05:39

//创建存储过程,记住关闭对象 
 
import java.sql.CallableStatement; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
 
public class UseSQLDataBase3 { 
Connection con; 
Statement state; 
ResultSet rs; 
CallableStatement cs;//调用存储过程使用的接口 
String url = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=test"; 
String user = "sa"; 
String password = ""; 
public void connectSQL(){ 
 
   try { 
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
   } catch (ClassNotFoundException e) { 
    // TODO 自动生成 catch 块 
    e.printStackTrace(); 
   } 
   
   try { 
    con = DriverManager.getConnection(url, user, password); 
    state = con.createStatement(); 
    
    
    //创建存储过程SQL语句 
    String createProcere = " create procere SHOW_SUPPLIERS " + 
      "as "+ 
      " select SUPPLIERS.SUP_NAME,COFFEES.COF_NAME "+ 
      "from suppliers,coffees"+ 
      "where suppliers.sup_id = coffees.sup_id "+ 
      "order by sup_name"; 
    //创建存储过程 
    state.executeUpdate("USE TEST"); 
    state.executeUpdate(createProcere); 
    
    //调用存储过程 
    cs = con.prepareCall("{call SHOW_SUPPLIERS}");//创建一个 CallableStatement 对象来调用数据库存储过程 
    //返回调用的结果集 
    rs = cs.executeQuery(); 
    
    //输出结果 
    System.out.println("SUPPLIERS.SUP_NAME            COFFEES.COF_NAME"); 
    while(rs.next()){ 
     String sup_name = rs.getString(1); 
     String coffees_name = rs.getString(2); 
     System.out.println(sup_name + "      " + coffees_name); 
    } 
    con.close(); 
    state.close();   
   } catch (SQLException e) { 
    // TODO 自动生成 catch 块 
    e.printStackTrace(); 
   } 
   
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苏打地牢500层boss怎么打 苏打地牢500层boss打法攻略 隐形眼镜用水龙头水泡着可以么 ...还有些痒痒的 越来越多的趋势 请问这是什么原因引起的 长安univ智电idd改无线充怎么改的 山药泥火龙果的做法 铜合金好还是纯铜好 铜合金和铜哪个好 合金为什么比铜要好 合金和铜哪个好 音乐风格要素主要包括 注册的曹操专车太原一共有多少辆 《摄政王绝宠:农女逆袭种田忙》txt下载在线阅读全文,求百度网盘云资源 《穿越农女有神器》txt下载在线阅读全文,求百度网盘云资源 《锦绣田园:灵泉农女种田忙》txt下载在线阅读全文,求百度网盘云资源 《风华农女种田忙》txt下载在线阅读全文,求百度网盘云资源 《农女逆袭种田忙》txt下载在线阅读全文,求百度网盘云资源 《田园有喜:重生农女种田忙》txt下载在线阅读全文,求百度网盘云资源 《农女种田忙又忙》txt下载在线阅读全文,求百度网盘云资源 锦绣农女种田忙_by一碗姜汤_txt全文免费阅读 breaking风车 街舞 大风车怎么学啊 街舞风车起始动作具体该怎么做啊,左腿该抬多高,怎么让双脚不碰地啊?手要什么时候放啊?? 风车都需要哪些基础?还有关于练倒立的问题,以及.. 用腾讯会议时如果学生关了摄影头和麦,老师能强行使用教师端权限看见学生状态吗? 腾讯会议可以使用ai插件吗判断学生是否在学习 道明诚的cfa班好吗 广州CFA培训课程哪家好 芦荟胶怎样实用效果最好? 鱿鱼母炖瘦肉一次要放多少鱿鱼母 干鱿鱼可以和鸭肉一起炖吗? 被女朋友迷得神魂颠倒是个什么样的体验? 女朋友对我撒娇时,我这样没羞没躁的人,突然脸红心跳,一瞬间防线崩塌,抵挡不住但是又想她继续怎么办? 女朋友每次见到她闺蜜的孩子都特别喜欢,回家后,女朋友为什么满脸委屈可怜巴巴的抱在我怀里看着我? 求一本 小说 名字叫 可爱女友回家记 作者是 鬼影子 有的请发QQ邮箱 Q号1193390027 每次女朋友看到她闺蜜家的孩子都很喜欢,回家后女朋友为什么趴在我怀里满脸委屈可怜巴巴的看着我? 请问谁有小说可爱的女友和她的家人...全集? 请私信我谢谢! 求类似《女友故事》《我的大学女友》《可爱的女友及其家人》等含有一女n男多p描写的小说。 女朋友太可爱了,不想伤害她,只想一直抱着她,我是不是生理上有毛病 女友升高太低了 才155,不过她挺可爱的 都睡过了 可是感觉实在是低了点 我想分手 第一次偷偷去男朋友或女朋友家都经历了什么? 女朋友说她沦陷了,嘛意思 金锣火腿肠新出金锣“肉粒多”? 无淀粉火腿肠和肉粒多哪个好? 金锣肉粒多和王中王的区别是什么? 你们感觉金锣肉粒多怎么样?是不是最好吃的火腿肠? 金锣火腿肠好吃好营养有肉粒多? 金锣肉粒多:让你享受更高端有营养的火腿肠了吗? 金锣肉粒多让你享受更高端有营养的火腿肠了?? 金锣集团肉粒多火腿肠的产品定位是什么? 金锣火腿肠肉粒多吗?