基本SQL资料的问题

时间:2009-05-05 18:04:14

标签: c# sql sql-server

我是SQL的初学者。我遇到了问题。 首先,我知道我已经安装了SQL 2005 Server n,然后创建了一个ConsoleApp,其余代码位于:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection myConnection = new SqlConnection("user id=userid;" +
                                       "Password=validpassword;" +
                                       "Trusted_Connection=yes;" +
                                       "Data Source=localhost;" +
                                       "connection timeout=300");



            try
            {
                myConnection.Open();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }


            SqlCommand myCommand = new SqlCommand("INSERT INTO table (Column1, Column2) " +
                                      "Values ('string', 1)", myConnection);

            myCommand.ExecuteNonQuery();



        }
    }
}

当我运行时...我得到 System.Data.dll 中发生的类型为'System.Data.SqlClient.SqlException'的未处理异常,带有myCommand.ExecuteNonQuery();

Kidnly指导我哪里出错了。我只想做简单的事情。插入一些东西然后读它。但是即使插入也会出错。

6 个答案:

答案 0 :(得分:6)

您没有使用数据库。将连接字符串中的初始目录查询设置为表“table”所在的数据库。或者,执行INSERT INTO dbName..table VALUES ...

另外,请查看ConnectionStrings.com。学习它,使用它,喜欢它。

答案 1 :(得分:3)

您似乎缺少连接中的Initial Catalog参数。它应该是“Initial Catalog = DatabaseName”。此外,如果您使用可信连接,则不需要用户ID和密码参数。

答案 2 :(得分:2)

开始移动您的异常处理以包含ExecuteNonQuery,然后使用完整的例外编辑您的问题。

        static void Main(string[] args)
        {
            SqlConnection myConnection = new SqlConnection("user id=userid;" +
                                       "Password=validpassword;" +
                                       "Trusted_Connection=yes;" +
                                       "Data Source=localhost;" +
                                       "connection timeout=300");


            try
            {
                myConnection.Open();

                SqlCommand myCommand = new SqlCommand("INSERT INTO table (Column1, Column2) " +
                                      "Values ('string', 1)", myConnection);
                myCommand.ExecuteNonQuery();    
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }

答案 3 :(得分:1)

当您安装SQL Server 2005时,您是否将其置于混合模式?你需要这个传递用户名和密码。我不确定.NET将在连接字符串中使用用户名/密码和可信连接= true。你得到一个开放的连接吗?

您还需要连接字符串中的数据库名称。

我无法在你的帖子上添加一个共享,所以我会在这里添加它。您需要启动SQL Server Management Studio才能访问您的数据库和将来的表。然后去帮助并开始在线阅读有关如何创建表格的书籍。

答案 4 :(得分:0)

与数据库的连接存在问题 - 用户名,密码和/或服务器错误,或者表和列不存在。我会在catch语句上放置一个断点,然后查看异常以了解更多信息。

答案 5 :(得分:0)

如果捕获异常,或调试控制台应用程序以便可以看到异常详细信息,则应该能够通过检查异常消息或内部异常来找出错误的完整详细信息。 / p>

正如Chad所提到的,这可能是一个简单的命名问题,您在查询中指定的数据库中不存在您在查询中指定的一个或多个列。或者,您尝试解释的数据类型可能存在问题。返回异常的数据库服务器消息将让您了解更多信息。