【问题标题】:java.lang.RuntimeException: java.sql.SQLException: Field 'UserName' doesn't have a default valuejava.lang.RuntimeException:java.sql.SQLException:字段“用户名”没有默认值
【发布时间】:2014-03-17 18:58:56
【问题描述】:

我正在开发一个网络应用程序......其中将有一个请求注册的用户列表......我们点击接受后,所有详细信息都必须从注册表移动到登录表......

这是我的 servlet:

ClientApproveService approve=new ClientApproveService();
approve.clientApprove();

这是我的服务:

public class ClientApproveService {

    public void clientApprove() {
        ClientApproveDAO cad=new ClientApproveDAO();
        DataSource dataSource=new DataSource();
        cad.setDataSource(dataSource);
        cad.insertClient();

    }

}

这是我的 DAO:

public class ClientApproveDAO {

        private DataSource dataSource;
        public void setDataSource(DataSource dataSource) {
       this.dataSource = dataSource;
    }
    Connection conn=null;
    PreparedStatement statement=null;
    ResultSet rs=null;


    public void insertClient() {    
        try{
            conn=dataSource.createConnection();
            PreparedStatement ps=conn.prepareStatement("insert into login(id,FirstName,LastName,Gender,Category,Dateofbirth,Age,Address,Country,State,city,PinCode,EmailId,ContactNo,MobileNo)select * from register ");
            ps.executeUpdate();
        }
        catch (SQLException e) {
            throw new RuntimeException(e);

    } finally {
            if (rs != null) try { rs.close(); } catch (SQLException ignore) {}
        if (statement != null) try { statement.close(); } catch (SQLException ignore) {}
        if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
    }


    }

}

这是我的注册表:

create table register(
id int(100) not null AUTO_INCREMENT primary key,
FirstName varchar(300) default null,
LastName varchar(300) default null,
Gender varchar(200) default null,
Category varchar(200) default null,
DateOfBirth varchar(200) default null,
Age int(3)default null,
Address varchar(1000) default null,
Country varchar(500) default null,
State varchar (500) default null,
city varchar(500)default null,
PinCode int(10)default null,
EmailId varchar(500)default null,
ContactNo varchar(20) default null,
MobileNo varchar(20) default null
);

这是我的登录表:

create table login(
UserName varchar(100)not null,
PassWord varchar(100)not null,
id int(100) not null AUTO_INCREMENT primary key,
FirstName varchar(300) default null,
LastName varchar(300) default null,
Gender varchar(200) default null,
Category varchar(200) default null,
DateOfBirth varchar(200) default null,
Age int(3)default null,
Address varchar(1000) default null,
Country varchar(500) default null,
State varchar (500) default null,
city varchar(500)default null,
PinCode int(10)default null,
EmailId varchar(500)default null,
ContactNo varchar(20) default null,
MobileNo varchar(20) default null
)

我必须将注册表中的所有数据插入登录表,但我仍然没有在登录表中自动生成用户名和密码字段...但是我应该能够生成其余的 ryt ???但是当我运行它时会引发异常

java.lang.RuntimeException: java.sql.SQLException: 字段 'UserName' 没有默认值

请有人帮我解决这个问题...在此先感谢....

【问题讨论】:

    标签: java mysql sql jakarta-ee spring-mvc


    【解决方案1】:

    你没有给UserName 提交价值,它没有默认值。 试试这个:

    insert into login(id,FirstName,LastName,Gender,Category,Dateofbirth,Age,Address,Country,State,city,PinCode,EmailId,ContactNo,MobileNo,UserName) 
    select *, 'undefined' from register
    

    或者,您也可以ALTER 表,因此userName 字段将具有默认值:

    ALTER TABLE login MODIFY userName varchar(100) NULL DEFAULT NULL;
    

    【讨论】:

    • 我试过了,我得到了一个异常,比如:java.lang.RuntimeException: java.sql.SQLException: Column count doesn't match value count at row 1
    • 嘿它的工作,但我有两个人注册了这个帖子,我点击了一个用户的接受,但两个用户都被添加到登录表我只想添加那个人......我我想当我点击接受时我必须获取 id 你能指导我吗??
    • 'insert into login(id,FirstName,LastName,Gender,Category,Dateofbirth,Age,Address,Country,State,city,PinCode,EmailId,ContactNo,MobileNo,UserName) select *, 'undefined '来自注册'我试过这个
    • 太棒了。现在,当这个问题解决后,你可能需要发布另一个问题,并充分描述它,因为现在,我没有关注你。
    • 嘿,还有一件事,即使你改变工作......我认为我的项目改变在这个阶段更合适,所以非常感谢......你肯定会发布一个新问题。 ....谢谢你
    【解决方案2】:

    您需要提供用户名值,因为列定义是“NOT NULL”。您可以先查询注册表,生成用户名,然后将新记录插入登录表。

    【讨论】:

      【解决方案3】:

      在 sql 命令提示符下运行以下 sql 查询并检查它是否工作

        insert into login(id,FirstName,LastName,Gender,Category,Dateofbirth,Age,Address,Country,State,city,PinCode,EmailId,ContactNo,MobileNo)select * from register 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-25
        • 2018-03-19
        • 2014-11-09
        • 2015-07-07
        • 2019-11-22
        • 2018-07-29
        • 2018-07-09
        • 2018-07-14
        相关资源
        最近更新 更多