以下内容是关于C# 数据库command类的试用问题

新手问题:有类sql 
public class sql
{
public void cmd(string sql)
{
string strconn = "……省略……";
SqlConnection conn = new SqlConnection(strconn);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
}

调用类时:
sql jj = new sql();
string strsql1 = "…省略… ";
SqlCommand cmd1 = new SqlCommand(strsql1, conn);
cmd1 = jj.cmd(strsql1);

提示 void 无法转化为System.Data.SqlClient.SqlCommand

怎么改呢?

白衣染霜花
浏览 284回答 3
3回答

茅侃侃

public void cmd(string sql)要么把这个方法改为有返回值的,比如成功返回0,失败返回1cmd1 = jj.cmd(strsql1);要么上边这句,调用的时候直接jj.cmd(strsql1);就可以了

翻阅古今

public static int ExecuteSql(string SQLString){using (SqlConnection connection = new SqlConnection(connectionString)){using (SqlCommand cmd = new SqlCommand(SQLString, connection)){try{connection.Open();int rows = cmd.ExecuteNonQuery();return rows;}catch (System.Data.SqlClient.SqlException e){connection.Close();throw e;}}}}调用时执行类名.ExecuteSql(sqlstring)

UYOU

你这里是你定义的方法的返回值出了问题。你的方法定义时,无返回值,可是你在调用的时候却利用该方法给一个参数赋了值,所以就出现了问题首先要改的就是你自己定义的cmd()方法,由于你在调用的时候,是将其赋给了一个SqlCommand类型的值,所以方法的返回值类型void 应该改为SqlCommand,即:public SqlCommand cmd(String sql){}这样改了只是把你的语法错误改掉了,但是解决不了问题:你在类的方法中已经定义了COMMAND对象,并且执行了语句,所以在调用的时候只需要传一个SQL语句的参数就可以了,不用再创建COMMAND对象。我是这样想的:你可以不用改方法,也可以把方法的返回值类型改为int,这个数是ExcuteNonQuery()方法的返回值( 受影响的行数),主要用来看看有没有成功执行。在调用的时候,把创建COMMAND对象的那句话去掉,直接调用方法,这样就OK了。
打开App,查看更多内容
随时随地看视频慕课网APP