虚心求指导!我在实现增加功能时遇到问题。我是用vS008创建的数据库,用DataGridView直接绑定数据源的,所以没有写连接sql的代码,在app.config文件里我看到它有生成。如果我表达不清楚请指出。求解答。。
代码:
    private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“database1DataSet1.student”中。您可以根据需要移动或移除它。
            this.studentTableAdapter.Fill(this.database1DataSet1.student);
        }        private void button2_Click(object sender, EventArgs e)  //添加
        {
            string connStr = Properties.Settings.Default.Database1ConnectionString;
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "insert into student(学号,姓名,班级)values(@学号,@姓名,@班级)";
            cmd.Connection = conn;
            cmd.Parameters.Add("@学号", SqlDbType.Int);
            cmd.Parameters.Add("@姓名", SqlDbType.NVarChar, 50);
            cmd.Parameters.Add("@班级", SqlDbType.NVarChar, 50);
            cmd.Parameters["@学号"].Value = textBox2.Text.Trim();
            cmd.Parameters["@姓名"].Value = textBox3.Text.Trim();
            cmd.Parameters["@班级"].Value = textBox4.Text.Trim();
            cmd.ExecuteNonQuery(); 
        }
cmd.ExecuteNonQuery(); 这句提示ExecuteNonQuery 要求已打开且可用的连接。连接的当前状态为已关闭。
请各路大神帮帮忙,具体指出怎么改。我还需要删除和修改的代码。先谢谢了。winform数据库c#sql

解决方案 »

  1.   

     SqlConnection conn = new SqlConnection(connStr);后面 conn.open();加上另外 sql 中用的是表列名是汉字??
    建表的时候最好都用英文来表达,否则会出现一些意外错误
      

  2.   

    SqlConnection conn = new SqlConnection(connStr);
    conn.Open();//一定要打开链接,才能进行数据库操作。
      

  3.   


    谢谢各位,我加上conn.open();后,又有问题了,还是那句,这次是这样的:
    ',' 附近有语法错误。
    我还想问问,我这样写的添加代码有问题吗?
      

  4.   

    学号的类型是int型的,在赋值的时候确给了一个string型。转换一下类型在试试
      

  5.   

    sql语句中,姓名后面那个逗号你打成中文的了
    cmd.CommandText = "insert into student(学号,姓名,班级)values(@学号,@姓名,@班级)";
      

  6.   

    感谢楼上各位,现在没问题了,我还想知道修改和删除的代码,另外,我还有个问题,这次我改成用Access数据库了,然后我弄了一个按学号查询功能:
    string varNumber = textBox1.Text.Trim(); 
                if (varNumber == "")
                {
                    MessageBox.Show("请输入你要查询的学号", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
          
                    string connStr = Properties.Settings.Default.StudentConnectionString;
                    OleDbConnection conn = new OleDbConnection(connStr);
                    OleDbDataAdapter adapter = new OleDbDataAdapter("select * from student where [学号] ='" + varNumber + "'", conn);
                    OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
                    DataTable table = new DataTable();
                    adapter.Fill(table);
                    studentDataGridView.DataSource = table;出现这样的问题:  
    在网上说好像Access和SQL是不同的,我不太懂,这个代码我在SQL数据库是没问题的。望解决。
      

  7.   

    自己新建个数据库吧,Access的不是很熟
    提供另外一个方法吧
    在项目中新建-》基于服务的数据库mdf
    在new一个连接
    SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=true;User Instance=true")
    AcctachDBFilename最好写绝对路径
    然后就操作吧