using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;namespace sql_test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            string strConnection = "Server= (local);";            strConnection += "initial catalog= test;";            strConnection += "user id= tongfang-PC\tongfang;";            strConnection += "password=******;";            strConnection += "Connect Timeout=5";            bool CanConnectDB = false;            using (SqlConnection objConnection = new SqlConnection(strConnection))
            {                try
                {                    objConnection.Open();                    CanConnectDB = true;                    objConnection.Close();                }                catch { }                if (CanConnectDB) MessageBox.Show("数据库连接成功!", "提示:");                else MessageBox.Show("数据库连接失败!", "提示:");            }
        }
    }
}以上是代码,请问为什么总是提示,数据库连接失败!

解决方案 »

  1.   

    我用SQL2008新建了数据库 test
      

  2.   

     public static int ExecuteSql(string SQLString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                    {
                        try
                        {
                            connection.Open();
                            int rows = cmd.ExecuteNonQuery();
                            return rows;
                        }
                        catch (System.Data.SqlClient.SqlException e)
                        {
                            connection.Close();
                            throw e;
                        }
                    }
                }
            }用 这个抛出异常就知道你出现什么问题了
      

  3.   

    你直接把异常抛出来看啊 , catch里面 你写空做毛啊。
      

  4.   

    写个catch欺骗自己
      

  5.   

    写个catch欺骗自己
      

  6.   

    我也跟一个:写个catch欺骗自己
      

  7.   

    tongfang-PC\tongfang;这个是你的数据库用户名吗?有那么操蛋的用户名么?还有你的数据库连接这段代码看着蛋疼
      

  8.   

    最好是用VS获取连接串, 不要自己瞎蒙。
    https://blog.csdn.net/yenange/article/details/77026214
      

  9.   

    我觉得应该是你的连接字符串有问题,首先确定tongfang-PC\tongfang这个账号是否能够登陆,账号这一块的话,新手容易把Windows身份验证和SQL server验证搞混,首先用tongfang-PC\tongfang这个账号和密码在数据库手动登陆,看是否能够登陆成功,如果能登陆成功,可以设置断点看哪一步没有执行。
      

  10.   

    哈哈,写个catch欺骗自己
      

  11.   

    vs工具里有个连接到数据库,测试连接成功后,点高级里面最下面有正确的连接字符串,你可以copy出来和你自己的对比下
      

  12.   

    catch{},错误都在这里嘛,你干嘛去掉
      

  13.   

    只有 Release (发布出去的)版本才应该 Catch,而你开发调试以及测试时自然是越早让 bug 跳出来越好,只有捕获了异常你才知道下一步该干什么事情,会用 vs 调试器调试抛出异常的那行代码是最基本的开发知识。把异常屏蔽了,纯粹是自欺欺人。不是搞开发。
      

  14.   

    高层程序通常是这样#if DEBUG
        abc();
    #else
        try
        {
            abc();
        }
        catch (Exception ex)
        {
            ........
        }
    #endif
    或者直接在 AppDomain.CurrentDomain.UnhandledException 以及 应用程序、窗体、页面、站点、Global.asax 等等层面去全局捕获异常。其实越是在低级的代码层面写 try......catch....... 代码,越是说明你是自学编程的。
      

  15.   

    .net 异常捕获机制,当代码抛出异常时,会一直向上抛出。那么应用程序的表现层捕获到它,给用户一个反馈(例如提示框),这都是正常的 Relase 版本中的处理逻辑。但是调试开发阶段则不是这样的。这就好像工程卖出一个发动机,跟工厂里研发发动机,是两个不同的思想体系和工作流程。你按照发布版本才有的思路来写 try.....catch......代码,并且甚至是写到了程序的比较低级的层次的代码上,这就说明没人教你如何进行大的产品的开发。
      

  16.   

    我也没看明白,从userid上来看应该是windows信任连接,但从整个连接字符串上来看却是网络连接方式。这到底是想用哪个方式连接?建议楼主补充一下sql server知识:1)什么是windows信任连接,什么是网络连接?两者连接字符串的规范是什么。
         至少windows信任连接你还却一个Trusted_Connection的选项。
    2)sql server实例是否启用了网络连接方式(这个需求要数据库中打开的)
    3)针对网络连接方式协议是否正确?windows登陆方式:
    Server=sqlserver服务地址;UserID=windows用户名;Database=数据库;Trusted_Connection=Yes;Connect Timeout=90
    sql 登陆方式:
    Server=sqlserver服务地址;uid=数据库登陆名;pwd=用户名密码;database=数据库 windows用户名是类似于 machinename\windowsusername 这种形式
    sql 登陆方式中数据库登陆名(其实与用户还有差别)在数据库中可以看到,也可以新键,到某个库之后这个登陆名会与用户名绑定,比如sa(存在一个sa的登陆名,在基础库中也存在sa用户。登陆数据之后sa 登陆名与sa用户绑定)。但sql登陆方式中要求sql必须户开sql登陆方式,否则无法登陆。而且要求协议必须正确,保证这两项一般都可以登陆了!
      

  17.   

    catch (Exception ex)
    {断点放这   自己调一下
    }