gpt4 book ai didi

java - 在 mysql 数据库中插入一行显示两次

转载 作者:行者123 更新时间:2023-12-01 00:01:24 25 4
gpt4 key购买 nike

代码在corejava,spring,mysql中执行controller类输出为 正确得到1, 但是我插入了一行但是在mysql数据库中插入了两行这是主要问题,如果有的话 下面代码中的问题,请帮助如果我们插入一行它必须只显示一行 在mysql数据库中。

在 IOC 中包含

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost/Springjdbc"></property>
<property name="username" value="root"></property>
<property name="password" value="ashok"></property>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="custDao" class="com.pw.spring.dao.CustomerDao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>

在 dao 类中

     package com.pw.spring.dao;

import java.io.File;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.imageio.stream.FileImageInputStream;

import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.mysql.jdbc.Blob;
import com.pw.spring.dto.B1;
import com.pw.spring.dto.CustomerDto;

public class CustomerDao extends JdbcDaoSupport implements ICustomerDao {
@Override
public int blobinsert() {
int in = 0;
String s1 = "insert into a1(name,image) values (?,?);";
in = getJdbcTemplate().update(s1, new PreparedStatementSetter() {

@Override
public void setValues(PreparedStatement arg0) throws SQLException {

arg0.setString(1, "shiva");
arg0.setObject(2, b2 ());
arg0.executeUpdate();
}

private Object b2() {
File f1 = new File("E:\\seenu\\New folder\\Luminance.jpg");
byte z [] = new byte[(int)f1.length()];

try
{


FileImageInputStream f2 = new FileImageInputStream(f1);

f2.read(z);
}
catch(IOException ex)
{
ex.printStackTrace();
}

return z;
}

});


return in;
}
}

在要执行的 Controller 类中

package com.pw.spring.controller;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.pw.spring.dao.CustomerDao;

public class Nutt
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
CustomerDao dao =(CustomerDao) context.getBean("custDao");
int i = dao.blobinsert();
System.out.println(i)
}
}

表是模式 springjdbc 中的 a1

create table a1 (name varchar(20),image BLOB);


output:1

但它是在 mysql 数据库中插入两次行,而不是像插入一行一样

shiva blob
shiva blob

请问如何用代码在mysql数据库中插入一行?提前感谢回答

最佳答案

不要在 setValues() 中调用 arg0.executeUpdate(); .此方法用于设置值,不用于执行语句。

JdbcTemplate.update()将执行语句。

关于java - 在 mysql 数据库中插入一行显示两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com