回 帖 发 新 帖 刷新版面

主题:关于c#向access数据库插入数据[求助]

绝对不是权限的问题...我能够修改和删除数据,但插入数据的时候虽然提示插入成功,可数据库内只自动向下插入一个空行....难道我insert的写法有问题???

找了半天找不到...请各位大侠帮偶看看....谢谢了....

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace xiugaimdb
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection mycn;
        OleDbCommand oledbcmd;

        private void Form1_Load(object sender, EventArgs e)
        {
            mycn = new OleDbConnection();
            mycn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "xsxx.mdb";
            oledbcmd = new OleDbCommand();
            oledbcmd.Connection = mycn;
            oledbcmd.CommandType = CommandType.Text;
            oledbcmd.CommandText = "select * from [xsxx]";
            mycn.Open();
            OleDbDataReader dReader = oledbcmd.ExecuteReader(CommandBehavior.CloseConnection);
            while (dReader.Read())
            { 
                ListViewItem newItem=listView1.Items.Add(dReader["xs_xh"].ToString().Trim());
                newItem.SubItems.Add(dReader["xs_xm"].ToString().Trim());
                newItem.SubItems.Add(dReader["xs_xb"].ToString().Trim());
                newItem.SubItems.Add(dReader["xs_dz"].ToString().Trim());
                newItem.SubItems.Add(dReader["xs_cj"].ToString().Trim());
            }
            dReader.Close();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                textBox1.Text = listView1.SelectedItems[0].Text;
                textBox2.Text = listView1.SelectedItems[0].SubItems[1].Text;
                textBox3.Text = listView1.SelectedItems[0].SubItems[2].Text;
                textBox4.Text = listView1.SelectedItems[0].SubItems[3].Text;
                textBox5.Text = listView1.SelectedItems[0].SubItems[4].Text;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "添加")
            {
                button1.Text = "保存";
                textBox1.Text = ""; textBox2.Text = "";
                textBox3.Text = ""; textBox4.Text = "";
                textBox5.Text = ""; textBox1.Focus();
                textBox1.ReadOnly = false; textBox2.ReadOnly = false;
                textBox3.ReadOnly = false; textBox4.ReadOnly = false;
                textBox5.ReadOnly = false;
                button2.Enabled = false; button3.Enabled = false;
            }
            else
            {
                oledbcmd.CommandText = "INSERT INTO [xsxx] (xs_xh,xs_xm,xs_xb,xs_dz,xs_cj) VALUES('"
                    +textBox1.Text+"','"
                    +textBox2.Text+"','"
                    +textBox3.Text+"','"
                    +textBox4.Text+"','"
                    +textBox5.Text+"')";
                mycn.Open();
                int cmdresults = oledbcmd.ExecuteNonQuery();
                mycn.Close();
                if (cmdresults == 1)
                {
                    textBox1.ReadOnly = true; textBox2.ReadOnly = true;
                    textBox3.ReadOnly = true; textBox4.ReadOnly = true;
                    textBox5.ReadOnly = true;
                    button2.Enabled = true; button3.Enabled = true;
                    ListViewItem newItem = listView1.Items.Add(textBox1.Text);
                    newItem.SubItems.Add(textBox2.Text);
                    newItem.SubItems.Add(textBox3.Text);
                    newItem.SubItems.Add(textBox4.Text);
                    newItem.SubItems.Add(textBox5.Text);
                    button1.Text = "添加";
                    MessageBox.Show("插入数据成功!");
                }
                else
                    MessageBox.Show("插入数据失败!");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                if (button2.Text == "修改")
                {
                    button2.Text = "保存";
                    textBox2.ReadOnly = false; textBox3.ReadOnly = false;
                    textBox4.ReadOnly = false; textBox5.ReadOnly = false;
                    textBox2.Enabled = false; textBox3.Enabled = false;
                    textBox2.Focus();
                }

                else
                {
                    string xs_xh = listView1.SelectedItems[0].Text;
                    oledbcmd.CommandText = "update [xsxx] set xs_xm='" + textBox2.Text + "',xs_xb='" + textBox3.Text + "',xs_dz='" + textBox4.Text + "',xs_cj='" + textBox5.Text + "'where xs_xh='" + xs_xh + "'";
                    mycn.Open();
                    int cmdresults = oledbcmd.ExecuteNonQuery();
                    mycn.Close();
                    if (cmdresults == 1)
                    {
                        textBox2.ReadOnly = true; textBox2.ReadOnly = true;
                        textBox4.ReadOnly = true; textBox5.ReadOnly = true;
                        button2.Enabled = true; textBox5.ReadOnly = true;
                        listView1.SelectedItems[0].SubItems[1].Text = textBox2.Text;
                        listView1.SelectedItems[0].SubItems[2].Text = textBox3.Text;
                        listView1.SelectedItems[0].SubItems[3].Text = textBox4.Text;
                        listView1.SelectedItems[0].SubItems[4].Text = textBox5.Text;
                        button2.Text = "修改";
                        MessageBox.Show("修改数据成功!");
                    }
                    else
                        MessageBox.Show("修改数据失败!");
                }
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                string xs_xh = listView1.SelectedItems[0].Text;
                oledbcmd.CommandText = "delete from [xsxx] where xs_xh='" + xs_xh + "'";
                mycn.Open();
                oledbcmd.ExecuteNonQuery();
                mycn.Close();
                listView1.Items.Remove(listView1.SelectedItems[0]);
                textBox1.Text = ""; textBox2.Text = "";
                textBox3.Text = ""; textBox4.Text = ""; textBox5.Text = "";
            }
        }

    }

}



插入代码在button1_Click事件中... 还是我别的什么地方出了错...中是郁闷...

大家帮偶看看...谢谢了...

回复列表 (共11个回复)

沙发

大侠们给点提示啊.....谢谢拉....

板凳

是不是你输了的文字太长,而你的字段限制

3 楼

不可能啊,我的所有字段都是文本型的...

4 楼

学号 姓名 性别 地址 分数  这些字段 能输几个字进去啊......

5 楼

请问你的button1是干嘛用的,如果可能的话,请把界面来发过来看一下。
如果说插入有误的话,就是你的下面这段代码出错了。。
 if (button1.Text == "添加")
            {
                button1.Text = "保存";
                textBox1.Text = ""; textBox2.Text = "";
                textBox3.Text = ""; textBox4.Text = "";
                textBox5.Text = ""; textBox1.Focus();
                textBox1.ReadOnly = false; textBox2.ReadOnly = false;
                textBox3.ReadOnly = false; textBox4.ReadOnly = false;
                textBox5.ReadOnly = false;
                button2.Enabled = false; button3.Enabled = false;
            }
            else
            {
                oledbcmd.CommandText = "INSERT INTO [xsxx] (xs_xh,xs_xm,xs_xb,xs_dz,xs_cj) VALUES('"
                    +textBox1.Text+"','"
                    +textBox2.Text+"','"
                    +textBox3.Text+"','"
                    +textBox4.Text+"','"
                    +textBox5.Text+"')";
                mycn.Open();
                int cmdresults = oledbcmd.ExecuteNonQuery();
                mycn.Close();
                if (cmdresults == 1)
                {
                    textBox1.ReadOnly = true; textBox2.ReadOnly = true;
                    textBox3.ReadOnly = true; textBox4.ReadOnly = true;
                    textBox5.ReadOnly = true;
                    button2.Enabled = true; button3.Enabled = true;
                    ListViewItem newItem = listView1.Items.Add(textBox1.Text);
                    newItem.SubItems.Add(textBox2.Text);
                    newItem.SubItems.Add(textBox3.Text);
                    newItem.SubItems.Add(textBox4.Text);
                    newItem.SubItems.Add(textBox5.Text);
                    button1.Text = "添加";
                    MessageBox.Show("插入数据成功!");
                }
                else
                    MessageBox.Show("插入数据失败!");
            }
if(button1.text=="插入")这里为什么这样子判断,没看到界面,也不知道你的设计,
所以也不好怎么说,可能是你自己搞反了,这段代码if和else两个代码换一下。。

6 楼

额....这个论坛不支持回帖上传图片.....???

我把启动界面的图发在附件上了....楼上的能帮偶看看吗....

7 楼

额.....我想说一下,我的数据库中还有个xs_id的自动编号字段,我把它定义成主键,但没有在代码中提到...会造成影响吗???

我在 

oledbcmd.CommandText       =       "INSERT       INTO       [xsxx]       (xs_xh,xs_xm,xs_xb,xs_dz,xs_cj)       VALUES(   '   "   
                                                                                +textBox1.Text+   "   ',   '   "   
                                                                                +textBox2.Text+   "   ',   '   "   
                                                                                +textBox3.Text+   "   ',   '   "   
                                                                                +textBox4.Text+   "   ',   '   "   
                                                                                +textBox5.Text+   "   ')   ";   
之前加上了 
MessageBox.Show(textBox1.Text+ "\n "+textBox2.Text+ "\n "+textBox3.Text+ "\n "+textBox4.Text+ "\n "+textBox5.Text+ "\n ");  

发现:
对话框上一片空白.... 

文本框里的东西没接收到...这是怎么搞的....????晕.....      

8 楼

我日......... 

我日................. 

日............................ 

我终于明白了,我每次应该先点《添加》按钮,然后再去填写数据....再《保存》。 

如果我每次一上来就去填写数据在按下《添加》按钮后,再按下《保存》 数据就被清空了...然后每次保存的都是空记录... 

我真日了..... 

9 楼

可以传源码文件,大家可以帮你调试一下

10 楼

嘎嘎,谢谢楼上的...不用了,不是代码的问题...是我运行时操作的问题....

真是把我郁闷了一把....

我来回复

您尚未登录,请登录后再回复。点此登录或注册