【问题标题】:Why is my program not connecting to the database?为什么我的程序没有连接到数据库?
【发布时间】:2012-04-19 17:10:31
【问题描述】:

我正在创建一个数据库,以便存储用户名和密码。我已经在 Microsft Visual Express C# 2010 上成功创建了一个数据库。

我的程序似乎运行良好,并且没有产生任何错误消息,只是我没有收到任何反馈:看起来我的程序实际上并没有向数据库发出请求,或者没有返回结果。怎么回事?

    private void button1_Click(object sender, EventArgs e)
    {
        string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
        SqlConnection cn = new SqlConnection(connection);
        try
        {
            cn.Open();
        }
        catch (Exception)
        {
            MessageBox.Show("Did not connect");
        }
        string username = textBox1.Text;
        string password = maskedTextBox1.Text;
        string sqlquery = ("SELECT * FROM User WHERE Username = '" + textBox1.Text + "'");
        sqlquery = "INSERT INFO [User] (Username, Password) VALUES ('" + textBox1.Text + "','" + maskedTextBox1.Text + "')";
        SqlCommand Command = new SqlCommand(sqlquery, cn);
        Command.Parameters.AddWithValue("Username", username);
        Command.Parameters.AddWithValue("Password", password);
    }
    private void Form1_load(object sender, EventArgs e)
    {
        string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
        SqlConnection cn = new SqlConnection(connection);
        try
        {
            cn.Open();
        }
        catch (Exception)
        {
            MessageBox.Show("Did not connect");
        }
    }

}

}

【问题讨论】:

  • 您可能使用了错误的连接字符串。 “Microsft visual Express C# 2010”不是产品,我假设您的意思是通过 Visual Studio Express。您是如何创建数据库的?
  • 你说你没有得到任何反馈,所以你的程序只是运行还是......?
  • 删除 try/catch 块,因为它们正在吞噬实际错误。您可以查看错误类型、消息和堆栈跟踪以确定确切的问题。当用户在消息框上单击“确定”时,尝试捕获也会产生更多问题。
  • 我认为它的视觉工作室表达,但我使用它的 C# 版本。我在程序本身上创建了数据库,它具有创建数据库的选项,就像在 SQL 服务器管理快递上一样。或 MYSQL。

标签: c# database sqlcommand


【解决方案1】:

您实际上并没有执行SqlCommand,因此您不会“看到”任何事情发生似乎是合乎逻辑的。尝试将以下行添加到 button1_Click 的末尾:

Command.ExecuteNonQuery(); // actually execute the INSERT INFO... query

您的 SQL 代码存在一些问题,但在执行命令后您会收到异常。

【讨论】:

  • 好收获。此外,您还需要正确处理 ado.net 对象以防止内存泄漏。
  • 有很多可以改进的地方,但是,这是我遗漏的 OP 的作业,而不是手头的问题。
  • 现在我得到了反馈。我遇到了一个错误,但现在我有一些事情要做,谢谢六。
猜你喜欢
  • 2021-09-06
  • 2016-09-29
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2017-01-24
  • 2016-01-12
相关资源
最近更新 更多