"一个新的表达式需要在类型&#34之后的(),[]或{};

时间:2014-04-20 16:37:02

标签: c# asp.net

我正在尝试将新用户添加到我的用户数据库,但我收到此错误:

  

cmd.Connection = new connection;

处输入后,新表达式需要(),[]或{}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;

namespace _Users
{
    public partial class registration : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnRegistration_Click(object sender, EventArgs e)
        {
            string connect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|userDb.accdb";
            using (OleDbConnection conn = new OleDbConnection(connect))
            {
                OleDbCommand cmd = new OleDbCommand("INSERT INTO Users (firstname, surname, Username, Email, Password, Contact) VALUES (@firstname, @surname, @Username, @Email, @Password, @Contact)");
                cmd.CommandType = CommandType.Text;
                cmd.Connection = new connection;
                cmd.Parameters.AddWithValue("@firstname", txtbFN.Text);
                cmd.Parameters.AddWithValue("@surname", txtbSN.Text);
                cmd.Parameters.AddWithValue("@Username", txtbUsrN.Text);
                cmd.Parameters.AddWithValue("@Email", txtbEmail.Text);
                cmd.Parameters.AddWithValue("@Password", txtbPassW.Text);
                cmd.Parameters.AddWithValue("@Contact", txtbCnt.Text);
                connection.Open();
                cmd.ExecuteNonQuery();
            }     
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您需要删除该行

cmd.Connection = new connection;

并将其替换为

cmd.Connection = conn;

new关键字表示您要创建类的新实例。

您还必须将connection.Open();替换为conn.Open();(感谢@ p.s.w.g。征求意见)

答案 1 :(得分:0)

在最后一个块之前,您定义了一个名为conn的连接。 既然您想将它存储在Connection对象中,您只需编写:

cmd.Connection = conn;

并且,由于您要打开存储在cmd中的连接,然后使用以下方法调用Open上的cmd.Connection方法:

cmd.Connection.Open();

关于您的异常,new关键字必须始终跟随类构造函数。那些构造函数看起来像MyClass.MyConstructor(someParameters)

答案 2 :(得分:0)

请注意代码中未突出显示的文字。

cmd.Connection = new connection;

这意味着,没有名为“连接的类。替换为

cmd.Connection = conn; 

您正在传递方法中的参数。这将在这里使用。然后,您将使用

打开链接
conn.Open();

答案 3 :(得分:-1)

 using (OleDbConnection conn = new OleDbConnection(connect))
                {
                    OleDbCommand cmd = new OleDbCommand("INSERT INTO Users (firstname, surname, Username, Email, Password, Contact) VALUES (@firstname, @surname, @Username, @Email, @Password, @Contact)");
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = conn ;
                    cmd.Parameters.AddWithValue("@firstname", txtbFN.Text);
                    cmd.Parameters.AddWithValue("@surname", txtbSN.Text);
                    cmd.Parameters.AddWithValue("@Username", txtbUsrN.Text);
                    cmd.Parameters.AddWithValue("@Email", txtbEmail.Text);
                    cmd.Parameters.AddWithValue("@Password", txtbPassW.Text);
                    cmd.Parameters.AddWithValue("@Contact", txtbCnt.Text);
                    connection.Open();
                    cmd.ExecuteNonQuery();
                }