数据未插入Azure上托管的SQL Server数据库

时间:2014-04-14 15:59:56

标签: c# sql sql-server azure azure-sql-database

我有一个托管在Azure上的SQL Server数据库。我正在尝试使用C#将数据输入到表中,并且出于某种原因,数据未出现在表中。这是我正在使用的代码。我不知道问题是在连接字符串中还是其他内容。有什么想法吗?

   //string connection = ("user id=MyGoals;" + "Password=pass;" + "Server=tcp:vclr5u6rk6.database.windows.net;" + "Trusted_Connection=yes;" + "Database=myGoals;" + "connection timeout=30");
            string connection = "Server=tcp:vclr5u6rk6.database.windows.net, 1433; Database=myGoals;Uid=MyGoals;Pwd=pass;";
            SqlConnection conn = new SqlConnection(connection);
            conn.OpenAsync();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "INSERT INTO Users(FirstName, SecondName, Password, Email, DOB) values (@fn, @sn, @pass, @email, @dob)";
            string firstname = Page.Request.Form["firstname"].ToString();
            string secondname = Page.Request.Form["secondname"].ToString();
            string email = Page.Request.Form["email"].ToString();
            string password = Page.Request.Form["password"].ToString();
            string birthday = Page.Request.Form["birthday"].ToString();
            cmd.Parameters.AddWithValue("@fn", firstname);
            cmd.Parameters.AddWithValue("@sn", secondname);
            cmd.Parameters.AddWithValue("@pass", password);
            cmd.Parameters.AddWithValue("@email", email);
            cmd.Parameters.AddWithValue("@dob", birthday);
            cmd.ExecuteNonQueryAsync();
            conn.Close();

1 个答案:

答案 0 :(得分:3)

您未在await电话上使用*Async()运算符,因此代码执行错误,因为它没有等待操作(例如打开连接)完成。要么使用方法async并使用await运算符,要么不要使用*Async()方法,因为它们会在以后的某个时间点为要执行的操作返回任务 您没有等待完成。

例如:

 public async Task Foo()
 {
     /// <snip />

     await conn.OpenAsync();

     /// <snip />

     await cmd.ExecuteNonQueryAsync();

     /// <snip />
 }

或:

 public void Foo()
 {
     /// <snip />

     conn.Open();

     /// <snip />

     cmd.ExecuteNonQuery();

     /// <snip />
 }