当前位置:编程学习 > C#/ASP.NET >>

请问关于C#中连接数据库的问题

请教我写的很简单一个从控制台显示数据库数据的小程序,可是编译后数据无法数据,请大家帮忙看看是什么原因导致的??

代码如下:
static void Main(string[] args)
        {
            string strConnection = "user = sa;password = sa;";
            strConnection += "initial catalog = Test123; Server = 172.18.*.*;";
            SqlConnection thisConnection = new SqlConnection(strConnection);
                               
            thisConnection.Open();
            SqlCommand thisCommand = thisConnection.CreateCommand();
            thisCommand.CommandText = "Select type,count(id) from dbo.evt_LogInfo where date like '2007-12-28%' group by type";
            SqlDataReader thisReader = thisCommand.ExecuteReader();
            while (thisReader.Read())
            {
                Console.WriteLine("\t{0}\t{1}",thisReader["type"],thisReader["sum"]);
            }
            thisReader.Close();
            thisConnection.Close();
            Console.Write("Programme finished");
            Console.ReadLine();
        }

控制台的输出只有“Programme finished”,没有任何数据。
--------------------编程问答-------------------- 呃.....我弱弱的问一下:什么叫"数据无法数据"咧? --------------------编程问答-------------------- Console.WriteLine("\t{0}\t{1}",thisReader["type"],thisReader["sum"]); 
这个位置有问题.
--------------------编程问答-------------------- 哦?是吗,那如果我想让这两个字段并列显示出来,应该怎么写呢? --------------------编程问答-------------------- 应该没问题吧,就算索引越界也应该有个报错,既然LZ的程序没报错,说明这里没错误 --------------------编程问答-------------------- 漂过~~~ --------------------编程问答-------------------- 看看Console.WriteLine(thisReader["type"].ToString())的结果是什么? --------------------编程问答-------------------- using System;
using System.Data.OleDb;


class Test
{
public static void Main()
{
OleDbConnection c=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DogManager.mdb");
c.Open();
OleDbCommand cmd=new OleDbCommand("Select * from 基本信息",c);
OleDbDataReader   thisReader   =   cmd.ExecuteReader(); 
while   (thisReader.Read()) 
                { 
                       Console.WriteLine("\t{0}\t{1}",thisReader["申请人"],thisReader["编号"]); 
                } 
                c.Close(); 
                Console.Write("Programme   finished"); 
                Console.ReadLine(); 
        } 

}

没有SQL环境,模仿做了一下 没问题呀 --------------------编程问答-------------------- 回neok:

添加了这条语句后,系统抛错了:阅读器关闭时 MetaData 的尝试无效。 --------------------编程问答-------------------- 回nisnow:

我的程序是连接sql server的,但是我换成其他数据库,仍然不能成功。实在不明白是为什么~

难道除了在程序里的代码之外,还需要做其他数据库连接的设置么? --------------------编程问答-------------------- 添加在哪里了?不能在最后啊,在Console.WriteLine("\t{0}\**")改;
怀疑是否读取到了数据哦。


我用文本测试没问题

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\Documents and Settings\Administrator\桌面\game.txt");
            string sLine = "";
            ArrayList arrText = new ArrayList();

            while (sLine != null)
            {
                sLine = sr.ReadLine();
                if (sLine != null)
                    arrText.Add(sLine);
                Console.WriteLine("\t{0}",sLine);
            }
            sr.Close();
            Console.Write("Programme   finished");
            Console.ReadLine();

        }
    }
}
--------------------编程问答-------------------- 晕,你得添加到DataReader对象关闭前哪 --------------------编程问答-------------------- 不好意思
现在我将语句Console.WriteLine(thisReader["type"].ToString())
放在DateReader关闭之前、while循环之后
系统提示:在没有任何数据时进行无效的读取尝试。

难道真的没读到数据。。。晕了 --------------------编程问答-------------------- 如果把Console.WriteLine(thisReader["type"].ToString()) 
放在while循环里、Console.WriteLine("\t{0}"...之后
运行后的效果和之前是一样的,只输出:Programme finished
--------------------编程问答-------------------- 问题截了,原来是我连接的数据库本身做了权限设置
所以换了别台数据库之后就可以了,谢谢LS各位的好心帮助 :)
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,