none
超菜提问:C#中的数据库连接问题 RRS feed

  • 问题

  • 在下近日刚接触C#,今天在网上找了一个关于C#与SQL server连接的代码试运行一下,发现老出错,请各位大神帮助一二:
    以下是代码,很简单的:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data.SqlClient;
    
    
    namespace ConsoleApplication1
    {
      public class Conn
      {
        private SqlConnection myConn;
        /// <summary>
        /// 服务器连接字任串
        /// </summary>
        private string ServerStr;
        /// <summary>
        /// 服务器地址
        /// </summary>
        static string server;
        /// <summary>
        /// 数据库登陆用户名
        /// </summary>
        static string uid;
        /// <summary>
        /// 登陆密码
        /// </summary>
        static string pwd;
        /// <summary>
        /// 数据库名
        /// </summary>
        static string database;
        /// <summary>
        /// 构造函数
        /// </summary>
        public Conn()
        {
          ServerStr = "server=" + server + ";uid=" + uid + ";password=" + pwd + ";database=" + database;
          myConn = new SqlConnection(ServerStr);
        }
        /// <summary>
        /// 打开连接
        /// </summary>
        public void Open()
        {
          myConn.Open();
        }
        /// <summary>
        /// 测试数据库
        /// </summary>
        public int tOpen()
        {
          try
          {
            myConn.Open();
            return 1;
          }
          catch
          {
            return 0;
          }
        }
        /// <summary>
        /// 关闭连接
        /// </summary>
        public void Close()
        {
          myConn.Close();
        }
        /// <summary>
        /// 把自义类转化为SqlConnection类
        /// </summary>
        /// <returns>SqlConnection</returns>
        public SqlConnection ChangeType()
        {
          return myConn;
        }
        /// <summary>
        /// 设置服务器地址
        /// </summary>
        /// <param >服务器地址</param>
        public static void setServer(string Server)
        {
          server = Server;
        }
        /// <summary>
        ///设置登陆用户名
        /// </summary>
        /// <param >用户名</param>
        public static void setUid(string Uid)
        {
          uid = Uid;
        }
        /// <summary>
        /// 设置登陆密码
        /// </summary>
        /// <param >密码</param>
        public static void setPwd(string Pwd)
        {
          pwd = Pwd;
        }
        /// <summary>
        /// 设置数据库
        /// </summary>
        /// <param >数据库名</param>
        public static void setDatabase(string Database)
        {
          database = Database;
        }
        static void Main(string[] args)
        {
          //首先初始化连接字符串
          Conn.setServer("127.0.0.1");
          Conn.setUid("sa");
          Conn.setPwd("123");
          Conn.setDatabase("Test");
    
          //可以对数据库进行操作,这里的例子是一个查询的
          Conn myconn = new Conn();
          myconn.Open();
          string sel = "select * from student";
          SqlDataAdapter aCommand = new SqlDataAdapter(sel, myconn.ChangeType());
          aCommand.SelectCommand.CommandType = CommandType.Text();
          SqlDataReader datareader = aCommand.SelectCommand.ExecuteReader();
          if (datareader.Read() == true)//查询成功
          {
            datareader.Close();
            //操作
    
          }
          else//没查询到SQL语句要求的内容
          {
            //操作
    
          }
          myconn.Close();
        }
      }
    }
    
    
    我实在搞不懂为什么这句老出错:aCommand.SelectCommand.CommandType = CommandType.Text();
    错误信息为:错误 1 当前上下文中不存在名称“CommandType”
    2011年1月10日 14:20

答案

  • 您好,CommandType是个枚举不是方法。所以代码应改为 aCommand.SelectCommand.CommandType = CommandType.Text;
    • 已建议为答案 Neddy Ren 2011年1月12日 6:28
    • 已标记为答案 Neddy Ren 2011年1月17日 2:11
    2011年1月10日 16:26
    版主
  • 您好

    請將

    aCommand.SelectCommand.CommandType = CommandType.Text();

    改為

    aCommand.SelectCommand.CommandType = System.Data.CommandType.Text;


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已建议为答案 Neddy Ren 2011年1月12日 6:28
    • 已标记为答案 Neddy Ren 2011年1月17日 2:11
    2011年1月10日 16:34
  • 您好 CyberLeon 用户奖牌用户奖牌用户奖牌

    欢迎来到MSDN论坛。

    正如Jiyuan 和 小歐指出的,在下面这句代码中,有2个地方需要注意的:

     aCommand.SelectCommand.CommandType = CommandType.Text();
    
    

    1, CommandType.Text 是一个枚举类型,您在这里用作了方法。

    2.   CommandType 存在于 System.Data 命名空间下,而你之前没有引用到这个命名空间,因此会报“上下文不在”的错误。

    感谢您的参与。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. Welcome to the C# Forum! If you have any feedback, please tell us.
    • 已标记为答案 Neddy Ren 2011年2月17日 1:40
    2011年1月12日 7:41

全部回复

  • 您好,CommandType是个枚举不是方法。所以代码应改为 aCommand.SelectCommand.CommandType = CommandType.Text;
    • 已建议为答案 Neddy Ren 2011年1月12日 6:28
    • 已标记为答案 Neddy Ren 2011年1月17日 2:11
    2011年1月10日 16:26
    版主
  • 您好

    請將

    aCommand.SelectCommand.CommandType = CommandType.Text();

    改為

    aCommand.SelectCommand.CommandType = System.Data.CommandType.Text;


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已建议为答案 Neddy Ren 2011年1月12日 6:28
    • 已标记为答案 Neddy Ren 2011年1月17日 2:11
    2011年1月10日 16:34
  • 您好 CyberLeon 用户奖牌用户奖牌用户奖牌

    欢迎来到MSDN论坛。

    正如Jiyuan 和 小歐指出的,在下面这句代码中,有2个地方需要注意的:

     aCommand.SelectCommand.CommandType = CommandType.Text();
    
    

    1, CommandType.Text 是一个枚举类型,您在这里用作了方法。

    2.   CommandType 存在于 System.Data 命名空间下,而你之前没有引用到这个命名空间,因此会报“上下文不在”的错误。

    感谢您的参与。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. Welcome to the C# Forum! If you have any feedback, please tell us.
    • 已标记为答案 Neddy Ren 2011年2月17日 1:40
    2011年1月12日 7:41
  • Developer Express VS2010 不妨去试一试,里边的控件有斧正功能!
    2011年2月8日 11:36