黑马程序员技术交流社区
标题: 下面是我的一段代码,编译后出现了下面的错误 [打印本页]
作者: 周健 时间: 2012-4-14 15:28
标题: 下面是我的一段代码,编译后出现了下面的错误
错误 :无法使用实例引用来访问成员“HRMan.DataAccess.conn”;请改用类型名来限定它
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace HRMan
{
class DataAccess
{
static SqlConnection conn;
static string Str = "Data Source=(local);Initial Catalog =HRMan;Integrated Security = SSPI;";
public DataAccess()
{
conn = new SqlConnection(Str);
conn.Open();
}
public int ExeSQL(string sql)
{
//实例化一个Sqlcommand对象,参数为sql语句和数据库连接成员
SqlCommand cmd = new SqlCommand(sql, this.conn);
try
{
//调用sqlcommand对象的executenonquery()访问
cmd.ExecuteNonQuery();
return 0;
}
catch (System.Data.SqlClient.SqlException ex) //异常处理
{
MessageBox.Show(ex.Message.ToString());
return -1;
}
finally
{
cmd.Dispose();
this.conn.Close();
}
}
}
}
作者: 余晓亮 时间: 2012-4-14 20:03
conn = new SqlConnection(Str);
是这一行代码呢有问题吧
实例化一个类
SqlConnection conn = new SqlConnection(Str);
作者: 郭青松 时间: 2012-4-17 00:54
static SqlConnection conn;
你定义的SqlConnection 是当前类的一个静态成员
那么在你的
//实例化一个Sqlcommand对象,参数为sql语句和数据库连接成员
SqlCommand cmd = new SqlCommand(sql, this.conn);
就不能使用this关键字来调用conn这个成员,
this能点出来的成员只是和实例相关的成员,static成员是和当前类相关。
所以你把this.conn改成conn就可以了。
作者: 谢栋文 时间: 2012-4-17 07:24
问题出现在这里: static SqlConnection conn。当对象一旦声明成静态是不能通过NEW关键字new出来的。把static去掉这程序应该就没问题了
作者: 马跃 时间: 2012-4-17 16:42
楼上正解,SqlConnection conn无法访问,改用public即可解决问题。
作者: 周俊辉 时间: 2012-4-18 09:59
SqlConnection conn 是不是要该成public
作者: china_xiaowu 时间: 2012-4-18 11:15
conn = new SqlConnection(Str);
这个你没有实例化!所以报错!你可以试着改成SqlConnection conn = new SqlConnection(Str);
这样应该就没有问题!!!:victory:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |