2 u010802822 u010802822 于 2014.12.11 11:18 提问

java :为什么不能将文本框的名字添加进数据库(SQL server 2008)中?

我想将从文本框中输入的文字添加到数据库当中,控制台显示的是“数据添加成功的提示”,但是数据库那边id号虽然自增长了,可Name列中却是空的?为什么?
(想贴图但是我新手不知道怎么贴,只能委屈大神看看这没有高亮的代码了...)

                        JPanel GongXiPanel = new JPanel();                                  // 新建面板保存标签
            GongXiPanel.setLayout(new GridLayout(3, 1, 5, 5));          // 将面板设置成流式布局
            getContentPane().add(GongXiPanel, BorderLayout.NORTH);      
            JLabel Congra = new JLabel("恭喜你!",SwingConstants.CENTER);
            Congra.setFont(new Font("宋体",Font.BOLD,30));
            GongXiPanel.add(Congra);

            winName = new JTextField();
            NewName = winName.getText().toString();
            winName.setVisible(true);
            winName.setBounds(new Rectangle(100, 140, 143, 22));
            GongXiPanel.add(winName);
            I_am = new JButton("确定");
            I_am.setVisible(true);
            I_am.setBounds(new Rectangle(20, 20, 20, 20));
            GongXiPanel.add(I_am);
                        winName.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                winName.requestFocus();
            }
        });


        I_am.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                SaveWinner save = new SaveWinner();
                save.setRecord(NewName);
            }
        });
 public class SaveWinner{

private String name = null;



public void setRecord(String newName) {
    name = newName;

    Connection conn = null;
    conn = DBConnection.getConnection();
    try {
        PreparedStatement statement = conn.prepareStatement("insert into Winner(winnerName) values(?)");
        statement.setString(1, name);
        statement.executeUpdate();
        statement.close();
        conn.close();
        System.out.println("插入成功!");
    } catch (SQLException e) {
        e.printStackTrace();
    } 
}

}

补充一下,我是想将用户输入的名字添加到数据库中,表里只有id列和Name列,id设为自增长。
现在虽然id会自动增长,但是Name列中的没有文字的,是空的,我不懂怎么回事。。。(我是新手)

7个回答

u010802822
u010802822   2014.12.11 11:21

补充一下,我是想将用户输入的名字添加到数据库中,表里只有id列和Name列,id设为自增长。
现在虽然id会自动增长,但是Name列中的没有文字的,是空的,我不懂怎么回事。。。(我是新手)

u012380282
u012380282 呵呵,你把名字设置到vo里,然后save就行啦!
3 年多之前 回复
hjkNet
hjkNet 我帮您编辑到问题中,方便他人阅读.
3 年多之前 回复
bigmazhiyu
bigmazhiyu   2014.12.11 11:33

你debug试试,看看NewName的值是多少?

u010802822
u010802822 我试过了,它好像没有执行到 NewName = winName.getText().toString();,所以没有得到NewName的值,我不懂为什么会这样
3 年多之前 回复
iamaTraveler
iamaTraveler   2014.12.11 13:08

有可能是没有提交的问题,你可以试一下在运行完sql语句后commit,
在没提交之前你的操作都是更新在内存中,没有在数据库里更新。

wsm201005030226
wsm201005030226   2014.12.12 14:45

你在这一行statement.setString(1, name);打个断点,然后debug,看这里name值是不是为空?个人认为你的newName没有获取到值,name又是newName赋值的

shenlan0322
shenlan0322   2014.12.13 18:42

写try catch 抛异常 找原因,之后打断点,调试,一步一步调试,看变量取值

u010802822
u010802822   2014.12.14 16:20

谢谢各位的热心解答了,姐我突然脑洞打开,发现了自己的错误所在,真正的原因是在需要将“NewName = winName.getText().toString();”这句话放在事件监听的方法当中,这样就解决问题了。谢谢大家的帮忙!~~~~~~

u010517231
u010517231   2014.12.14 16:34

看看那个细节出错了。数据库名称的精度不够?还是什么原因,仔细看下。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!