';对象';不包含ExecuteNonQuery错误的定义

本文关键字:定义 错误 对象 包含 ExecuteNonQuery | 更新日期: 2023-09-27 18:21:48

我在一个C#网站上工作,在那里我必须在数据库中动态创建一个表,该表的名称与用户注册时提供的用户名相同。

我的代码如下:

protected void btnRegister_Click(object sender, EventArgs e)
{
    string name = txtName.Text;
    string uname = txtUname.Text;
    string mail = txtMail.Text;
    string country = txtCountry.Text;
    string pass = txtPassword.Text;
    SqlConnection con = new SqlConnection(@"Data Source=XYZ'SQLEXPRESS;Initial Catalog=FileHost;Integrated Security=True");
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter("INSERT INTO register(name,username,mail_id,country,password) values('" + name + "','" + uname + "','" + mail + "','"+country+"','"+pass+"')", con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    string sql = "CREATE TABLE 'txtUname.Text'" +
        "(uname VARCHAR(50) CONSTRAINT PkeyMyId PRIMARY KEY, " + "fname VARCHAR(50), path VARCHAR(255))";
    cmd = new SqlCommand(sql, con);
    cmd.ExecuteNonQuery();
    con.Close();
    message.Text = "Registration Successfull!!!";
    txtName.Text = "";
    txtUname.Text = "";
    txtMail.Text = "";
    txtCountry.Text = "";
}

但我收到一个错误:

object不包含ExecuteNonQuery的定义,并且在以下行找不到接受第一个类型为object的参数的扩展方法ExecuteNonQuery(是否缺少using指令或程序集引用?):cmd.ExecuteNonQuery()

这是什么原因?

';对象';不包含ExecuteNonQuery错误的定义

当您将cmd声明为object时,编译器是绝对正确的:

private object cmd;
// ...
cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery(); // "object" has no "ExecuteNonQuery" method

将变量声明为SqlCommand:

private SqlCommand cmd;

您必须修复许多问题。首先,您必须使您的查询正确无误。

string sql = "CREATE TABLE 'txtUname.Text'" +
    "(uname VARCHAR(50) CONSTRAINT PkeyMyId PRIMARY KEY, " + "fname VARCHAR(50), path VARCHAR(255))"; 

更改为

string sql = "CREATE TABLE ["+txtUname.Text+"] +
    "(uname VARCHAR(50) CONSTRAINT PkeyMyId PRIMARY KEY, fname VARCHAR(50), path VARCHAR(255))";

你能试试这个吗

`using SqlCommand cmd = new SqlCommand(sql,con)){
     //put your stuff here 
    cmd.ExecuteNonQuery();
   }`