在运行时创建表并在其中存储数据

时间:2014-07-15 07:34:24

标签: c# sql-server-2008

我想在运行时创建一个表并将信息存储到其中。 在我试过的代码下面。

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");    

1 个答案:

答案 0 :(得分:1)

ExecuteReaderCREATE声明一起使用是没有意义的。它无论如何都不会返回任何数据(并且它会重新SqlDataReader,它不是void方法。请改用ExecuteNonQuery来执行查询。与INSERT语句相同。

values不是value。看一下INSERT (Transact-SQL)语法。

同时使用using statement来处理您的SqlConnectionSqlCommand之类的内容;

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/