我想在运行时创建一个表并将信息存储到其中。 在我试过的代码下面。
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True;");
con.Open();
String crt = "CREATE TABLE trail (Name Varchar(50) NOT NULL, Sex Varchar(50) NOT NULL)";
SqlCommand cov = new SqlCommand(crt, con);
cov.ExecuteReader();
String add = "Insert into trail value (@nam,@sex)";
SqlCommand cmd = new SqlCommand(add,con);
cmd.Parameters.AddWithValue("@nam",TextBox1.Text);
cmd.Parameters.AddWithValue("@sex", RbtGender.SelectedValue);
cmd.ExecuteReader();
con.Close();
Response.Redirect("Success.aspx");
答案 0 :(得分:1)
将ExecuteReader
与CREATE
声明一起使用是没有意义的。它无论如何都不会返回任何数据(并且它会重新SqlDataReader
,它不是void
方法。请改用ExecuteNonQuery
来执行查询。与INSERT
语句相同。
而values
不是value
。看一下INSERT (Transact-SQL)语法。
同时使用using
statement来处理您的SqlConnection
和SqlCommand
之类的内容;
using(SqlConnection con = new SqlConnection(connString))
using(SqlCommand cov = con.CreateCommand())
{
//
}
顺便说一下,不要使用AddWithValue
。使用one of Add
overloads。这种方法存在一些问题。
阅读:http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/