请问关于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}\**")改;
怀疑是否读取到了数据哦。
我用文本测试没问题
--------------------编程问答-------------------- 晕,你得添加到DataReader对象关闭前哪 --------------------编程问答-------------------- 不好意思
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();
}
}
}
现在我将语句Console.WriteLine(thisReader["type"].ToString())
放在DateReader关闭之前、while循环之后
系统提示:在没有任何数据时进行无效的读取尝试。
难道真的没读到数据。。。晕了 --------------------编程问答-------------------- 如果把Console.WriteLine(thisReader["type"].ToString())
放在while循环里、Console.WriteLine("\t{0}"...之后
运行后的效果和之前是一样的,只输出:Programme finished
--------------------编程问答-------------------- 问题截了,原来是我连接的数据库本身做了权限设置
所以换了别台数据库之后就可以了,谢谢LS各位的好心帮助 :)
补充:.NET技术 , C#