【问题标题】:How to execute an “insert into” query to a remote database with channel.connect();如何使用 channel.connect() 对远程数据库执行“插入”查询;
【发布时间】:2017-04-28 13:12:31
【问题描述】:

这是我尝试插入远程数据库表的 java 代码。

session.connect();
Channel channel = session.openChannel("exec");

String query = "INSERT INTO table_name
(id,serialno,userid,checktime,checktype,eventType) 
VALUES(502,1011,0078,'2017-04-17 17:27:51',6,23)";

((ChannelExec) channel).setCommand("mysql -uuser -ppwd -h localhost -e'" + 
query + "' database_name");
    InputStream in = channel.getInputStream();
    channel.connect();

我使用相同的代码来执行“select *”查询,而不是“插入查询”它完美地执行并且我得到了输出。但在这种情况下,它没有。请帮我找到解决方案。

【问题讨论】:

  • 您能否澄清您所说的“在这种情况下不是”的意思。你期待什么?您收到错误响应了吗?您是否运行查询以查看您的插入是否有效?
  • @BPS :这是我的问题 - 如何使用 channel.connect() 对远程数据库执行“插入”查询;执行插入查询时我没有收到任何错误。但是“插入”并没有反映在远程数据库中。我期待一个完美的查询插入远程数据库
  • @BPS : 为什么你无缘无故投反对票?如果你用 Head Line 从头到尾阅读我的问题,你会很容易理解。
  • 欢迎来到 Stack Overflow!请阅读stackoverflow.com/help/how-to-ask 和其他社区指南。即使他们无法回答您的问题,这里的人也希望您获得帮助。帮助你改进你的问题是一种方式。

标签: java mysql linux jsch remote-connection


【解决方案1】:

您需要使用 \" 转义双引号,因为双引号在 Java 中用作分隔符。

String query = "INSERT INTO table_name
(id,serialno,userid,checktime,checktype,eventType) 
VALUES(502,1011,0078,'2017-04-17 17:27:51',6,23)"                

((ChannelExec) channel).setCommand("mysql -uroot -proot -h localhost -e\"" + query + "\" yourdbname");

【讨论】:

    【解决方案2】:

    您是否在命令行上尝试过相同的命令?

    mysql -uuser -ppwd -h localhost -e'INSERT INTO table_name (id,serialno,userid,checktime,checktype,eventType) VALUES(502,1011,0078,'2017-04-17 17:27:51',6,23)' database_name
    

    它也不起作用。 INSERT 命令中的引号与命令行中包含 SQL 命令的引号冲突。

    一种方法是在命令行中使用双引号:

    mysql -uuser -ppwd -h localhost -e"INSERT INTO table_name (id,serialno,userid,checktime,checktype,eventType) VALUES(502,1011,0078,'2017-04-17 17:27:51',6,23)" database_name
    

    那么在Java中,你必须将那些双引号转义为\",因为Java使用双引号来分隔字符串。

    【讨论】:

    • 抱歉,我已经在命令行和 java 中尝试过(使用反斜杠)相同的代码,但没有成功。
    • 你是对的。不能按照我建议的方式转义单引号。我已经确定了答案。
    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2013-05-14
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多