请问,在C#中,如何给 select 查询语句参数赋值呀?

时间:2022-08-27 23:26:12
str = Sfzbm.Substring(0, 6);
            aa = int.Parse(str);
            SqlCommand CMD = new  SqlCommand("Select DQ From sfz" , conn);
            CMD.Parameters.Add(aa);
            conn.Open();

13 个解决方案

#1


请各位会者帮帮忙

#2


请会者帮帮忙呀

#3


我用的ORACLE,你改成SQL的
OracleParameter[]  para = new OracleParameter[2];
//设置参数
para[0] = new OracleParameter(":DD",OracleType.DateTime,SystemVariable.Parm_DateTime);
para[0].Value = DtStart;

para[1] = new OracleParameter(":DD2",OracleType.DateTime,SystemVariable.Parm_DateTime);
para[1].Value =  DateTime.Parse(DtEnd.ToShortDateString() + " 23:59:59");
//执行SQL语句。

#4


SqlCommand CMD = new  SqlCommand("Select DQ From sfz" , conn);
            你这个需要参数吗?

#5


你格式按我的来就好,其他的按你那边的要求来

#6


多谢
canserly(1个好汉3个裤衩) ( 

搞好了

#7


str = Sfzbm.Substring(0, 6);
aa = int.Parse(str);
SqlCommand CMD = new  SqlCommand("Select DQ From sfz Where BM = @aa" , conn);
SqlParameter myParm = CMD.Parameters.Add("aa",SqlDbType.Int);
myParm.Value = aa;
 conn.Open();
SqlDataReader myReader = CMD.ExecuteReader();
myReader.Read();
return myReader.GetString(0); 

conn.Close();

我是这样写的
正常情况下是可以运行了

但是,如果当没有查询到记录的时候,将会出错

请问大蛱们,是如何解决是好呀?

#8


SqlDataReader myReader = CMD.ExecuteReader();
myReader.Read();
return myReader.GetString(0); 
先检测有没有读到记录,你这样直接赋值肯定错的。就像用ado时,不检测rs是否eof就操作一样。
if(myReader.Read())
{return .....}

#9


str = Sfzbm.Substring(0, 6);
aa = int.Parse(str);
SqlCommand CMD = new  SqlCommand("Select DQ From sfz Where BM = @aa" , conn);
SqlParameter myParm = CMD.Parameters.Add("aa",SqlDbType.Int);
myParm.Value = aa;
 conn.Open();
SqlDataReader myReader = CMD.ExecuteReader();
myReader.Read();
//以下两句的的写法有问题,都已经返回了,后面的关闭操作不会再执行
//先检查一下myReader.GetString(0); 的结果再返回吧
return myReader.GetString(0); 

conn.Close();

#10


在返回之前,先检查读到的是不是空值

#11


我就是想问,用什么方法检查结果是否为空值呀?

#12


记得在ADO里面好有一个

RowCount 样的 属性可以检查

不知道。NET里面是怎么检查的

#13


多谢各位

在MSDN 上找到一个属性判断
我改成如下就可以了

                str = Number.Substring(0, 6);
                aa = int.Parse(str);
                SqlCommand CMD = new SqlCommand("Select DQ From sfz Where BM = @aa", conn);
                SqlParameter myParm = CMD.Parameters.Add("aa", SqlDbType.Int);
                myParm.Value = aa;
                conn.Open();
                SqlDataReader myReader = CMD.ExecuteReader();
                myReader.Read();
                if (myReader.HasRows)
                    return myReader.GetString(0);
                else
                    return "";

#1


请各位会者帮帮忙

#2


请会者帮帮忙呀

#3


我用的ORACLE,你改成SQL的
OracleParameter[]  para = new OracleParameter[2];
//设置参数
para[0] = new OracleParameter(":DD",OracleType.DateTime,SystemVariable.Parm_DateTime);
para[0].Value = DtStart;

para[1] = new OracleParameter(":DD2",OracleType.DateTime,SystemVariable.Parm_DateTime);
para[1].Value =  DateTime.Parse(DtEnd.ToShortDateString() + " 23:59:59");
//执行SQL语句。

#4


SqlCommand CMD = new  SqlCommand("Select DQ From sfz" , conn);
            你这个需要参数吗?

#5


你格式按我的来就好,其他的按你那边的要求来

#6


多谢
canserly(1个好汉3个裤衩) ( 

搞好了

#7


str = Sfzbm.Substring(0, 6);
aa = int.Parse(str);
SqlCommand CMD = new  SqlCommand("Select DQ From sfz Where BM = @aa" , conn);
SqlParameter myParm = CMD.Parameters.Add("aa",SqlDbType.Int);
myParm.Value = aa;
 conn.Open();
SqlDataReader myReader = CMD.ExecuteReader();
myReader.Read();
return myReader.GetString(0); 

conn.Close();

我是这样写的
正常情况下是可以运行了

但是,如果当没有查询到记录的时候,将会出错

请问大蛱们,是如何解决是好呀?

#8


SqlDataReader myReader = CMD.ExecuteReader();
myReader.Read();
return myReader.GetString(0); 
先检测有没有读到记录,你这样直接赋值肯定错的。就像用ado时,不检测rs是否eof就操作一样。
if(myReader.Read())
{return .....}

#9


str = Sfzbm.Substring(0, 6);
aa = int.Parse(str);
SqlCommand CMD = new  SqlCommand("Select DQ From sfz Where BM = @aa" , conn);
SqlParameter myParm = CMD.Parameters.Add("aa",SqlDbType.Int);
myParm.Value = aa;
 conn.Open();
SqlDataReader myReader = CMD.ExecuteReader();
myReader.Read();
//以下两句的的写法有问题,都已经返回了,后面的关闭操作不会再执行
//先检查一下myReader.GetString(0); 的结果再返回吧
return myReader.GetString(0); 

conn.Close();

#10


在返回之前,先检查读到的是不是空值

#11


我就是想问,用什么方法检查结果是否为空值呀?

#12


记得在ADO里面好有一个

RowCount 样的 属性可以检查

不知道。NET里面是怎么检查的

#13


多谢各位

在MSDN 上找到一个属性判断
我改成如下就可以了

                str = Number.Substring(0, 6);
                aa = int.Parse(str);
                SqlCommand CMD = new SqlCommand("Select DQ From sfz Where BM = @aa", conn);
                SqlParameter myParm = CMD.Parameters.Add("aa", SqlDbType.Int);
                myParm.Value = aa;
                conn.Open();
                SqlDataReader myReader = CMD.ExecuteReader();
                myReader.Read();
                if (myReader.HasRows)
                    return myReader.GetString(0);
                else
                    return "";