using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;using System.Data.SqlClient;
using System.Configuration;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        SqlConnection conn;        public Form1()
        {
            InitializeComponent();            //回车事件处理
            this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);            //数据库连接字符串            conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");
            conn.Open();
        }        //回车方法
       private void textBox1_KeyDown(object sender, KeyEventArgs e)  
       {
           if (e.KeyCode == Keys.Enter)
           {
               this.button1_Click(button1, null);
           }
       }
               //检测重码
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length == 0)
            {
                MessageBox.Show("输入不能为空!");
            }
            else
            {
                string code = textBox1.Text;
                SqlCommand cmd = new SqlCommand("insert into codeTable values('" + code + "')", conn);
                try
                {
                    int count = (int)cmd.ExecuteNonQuery();
                    if (count > 0)
                    {
                        listBox1.Items.Add(code + "  已录入");
                    }
                    else
                    {
                        listBox1.Items.Add(code + "  录入失败");
                    }
                }
                catch
                {
                    MessageBox.Show(code + "  已经存在!");
                }
                finally
                {
                    textBox1.Text = "";
                }
            }
        }以上是代码,每次输入东东都是显示,XXX已录入,相同的也有已存在的提示。关闭之后,数据库里面一看,还是没变化。
求解?不晓得啥米情况,这个数据库是用VS自带的mdf数据库。

解决方案 »

  1.   

    using(SqlConnection conn;= new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"))
    {
    }
    insert前判断数据是否存在
      

  2.   

    把数据库附加到sqlserver,不要复制到工程下,不然每次编译都会重新拷贝
      

  3.   


    呃偷懒了一下,没有装SQL,直接用VS的自带的数据库。该不会就是这里有问题吧?
      

  4.   

    1,使用查询分析器输入你的语句"insert into codeTable values('" + code + "')"看看数据库是否更新了?如果更新了那么到你的程序看看conn是否Open了;
    2,如果conn是Open的,并且程序已经提示xx已更新,那就说明应该程序没问题,就是sql更新返回了受影响的行数。
    那么检查你的数据库是否有触发器,当执行插入操作的时候自动进行删除或者数据库是否只读?
      

  5.   

    我看到这个东东:Database1.mdf文件属性复制到输出目录  始终复制 (还有两个选项 不复制跟如果较新则复制)生产操作  内容 (还有很多选项 编译、嵌入的资源、page、resources等等)莫非这里有讲究??
      

  6.   

    使用SQL Server的跟踪模版,检查是否SQL Server收到你的SQL请求语句