string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ this.path.Text.ToString().Trim();
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
cmd.CommandText = "select ID from Card";
for(int i= 0;i<cmd.ExecuteNonQuery();i++)
{
............
}
我断点调试的时候发现cmd.ExecuteNonQuery()是0的,Access文件的位置没有错的,是怎么回事呢?
谢谢
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
cmd.CommandText = "select ID from Card";
for(int i= 0;i<cmd.ExecuteNonQuery();i++)
{
............
}
我断点调试的时候发现cmd.ExecuteNonQuery()是0的,Access文件的位置没有错的,是怎么回事呢?
谢谢
using System.Data.OleDb;class Test
{
static void Main()
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + "P.mdb";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbCommand cmd= new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "select ID from Card";
int n = cmd.ExecuteNonQuery();
for(int i= 0; i < n; i++)
{
Console.WriteLine(i);
}
}
}
你这么用不对:cmd.ExecuteNonQuery()返回的不是查询的结果集,而是返回执行Sql所影响的行数。
是用于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。
对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。应该这样:
OleDbDataReader oDataReader = cmd.ExecuteReader();
while(oDataReader.Read())
{
int id = (int)oDataReader.GetValue(0);
for(int i=0; i<id; i++)
{
//TODO: ...
}
}
using System.Data.OleDb;class Test
{
static void Main()
{
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "P.mdb";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbCommand cmd= new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT COUNT(ID) FROM Card";
int n = (int)cmd.ExecuteScalar();
for(int i= 0; i < n; i++)
{
Console.WriteLine(i);
}
}
}
using System.Data.OleDb;class Test
{
static void Main()
{
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "P.mdb";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT ID FROM Card";
OleDbDataReader r = cmd.ExecuteReader();
while (r.Read())
{
int id = r.GetInt32(0);
Console.WriteLine(id);
}
}
}