';对象';不包含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()
。
这是什么原因?
当您将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();
}`