我有一个托管在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();
答案 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 />
}