Connection属性的错误尚未初始化

时间:2015-03-13 17:08:10

标签: c# sql database

好吧,我在C#上工作一点点,现在我开始使用C#与数据库合作,我已经在几个地方用Google搜索了,我无法确定哪里出错了,无处不在我需要打开一个连接,但它已经打开了。

        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=C:\Users\Gustavo\Documents\Visual Studio 2013\Projects\hour\hour\Database1.mdf");
        con.Open();
        try
        {
            string query = "INSERT INTO [Table] (name, time) VALUES ('test',1)";
            SqlCommand cmd = new SqlCommand(query);
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

3 个答案:

答案 0 :(得分:2)

使用using,处理关闭和处理,以防您忘记明确地执行此操作。把它放在try中,你在try之外有连接open命令,所以它不会捕获任何连接错误。您可能也希望查看参数化命令。

using (SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=C:\Users\Gustavo\Documents\Visual Studio 2013\Projects\hour\hour\Database1.mdf"))
{
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("INSERT INTO [Table] (name, time) VALUES (@name,@time)", conn))
        {
            cmd.Parameters.AddWithValue("@name", "test");
            cmd.Parameters.AddWithValue("@time", 1);
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
        }
}

答案 1 :(得分:1)

  SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=C:\Users\Gustavo\Documents\Visual Studio 2013\Projects\hour\hour\Database1.mdf");
        try
        {
            string query = "INSERT INTO [Table] (name, time) VALUES ('test',1)";
            SqlCommand cmd = new SqlCommand(query,con);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

答案 2 :(得分:0)

您需要将命令分配给连接。例如:

    private static void ReadOrderData(string connectionString)
    {
        string queryString = 
            "SELECT OrderID, CustomerID FROM dbo.Orders;";
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {

//----

            SqlCommand command = new SqlCommand(
                queryString, connection);


//----
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    Console.WriteLine(String.Format("{0}, {1}",
                        reader[0], reader[1]));
                }
            }
            finally
            {
                // Always call Close when done reading.
                reader.Close();
            }
        }
    }