C#简单的问题 ADO.net

classClass1{SqlConnectionconn;publicvoiddb_conn(){conn=newSqlConnection("server=.;dat... class Class1
{
SqlConnection conn;
public void db_conn()
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}

public DataTable db_conn_table(string str)
{
DataTable db = null;
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from"+str;
cmd.Connection = conn;
SqlDataAdapter sad = new SqlDataAdapter(cmd);
DataSet set = new DataSet();
sad.Fill(set);

Console.WriteLine(set.Tables[0]);

return db;
}
}
class Program:Class1
{

static void Main(string[] args)
{

string str = "sysusers";
Class1 cla = new Class1();
cla.db_conn();
DataTable de = cla.db_conn_table(str);

}
}
为什么会出现语法错误 还有这样写能调出来表不?讲解详细些
展开
 我来答
百度网友fa5c0f7
2011-03-11 · TA获得超过439个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:111万
展开全部
1、光看代码确实不容易看出语法错误的地方。
cmd.CommandText = "select * from"+str; 这句可能有问题,如果你的表明是Test的话,拼接的sql语句为:select * fromtest 也就是说少了个空格。拼接的时候要注意了。

2、本人觉得你对ADO.NET 不熟。不知道什么时候用SqlCommand、SqlDataAdapter 及他们的区别。
3、SqlCommand 一般的情况下是做增、删、改,因为增、删、改不是查询,不需要返回记录 。
用cmd.ExecuteNonQuery()方法来执行即可。 不过也可以查询cmd.ExecuteReader()返回记录集,SqlDataReader sdr = cmd.ExecuteReader();
while (true)
{
sdr.Read(); //一行一行读取记录集的数据。
}
4、SqlDataAdapter 一般用来做查询,返回一个记录集。
5、修改你的db_conn_table方法
public DataTable db_conn_table(string sql) //本人觉得传入一句sql比较好些
{
DataTable dt = null;
conn.Open();//如果是用SqlDataAdapter 不需要open也可以。如果是SqlCommand就需要open当然 你也需要close
//为什么不捕获异常呢
try
{
//SqlCommand cmd = new SqlCommand();//不需要
//cmd.CommandText = "select * from" + str;//不需要
//cmd.Connection = conn;//不需要
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
//DataSet set = new DataSet();//返回的是DataTable ,可以不需要DataSet了
//sad.Fill(set);
dt = new DataTable();
sda.Fill(dt);
}
catch (Exception ex)
{

}
conn.close(); //既然用open了 就要记得用close 释放资源
return dt;
}

6、不清楚可以提问
德朴数财经
2011-03-11 · 超过14用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:16.8万
展开全部
public void db_conn()
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
这个方法改下名字,改成构造方法就ok了,这个方法没有被调用,你对conn的初始化也就没有进行,所以报错了哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
毓闻瑶4x
2011-03-11 · TA获得超过153个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:120万
展开全部
我说说你4点问题:
1、你写的代码没有注释,这是一个不好的习惯.(不管你是在学习中,还是只为了测试代码)以后非常的不方便维护.
2、你写的方法public DataTable db_conn_table(string str)返回值是空的,你没有注意吗?你只声明了db,但是却没有给它赋过值.这样子的话完全可以把这个返回值给去掉.public void db_conn_table(string str),Main方法里面也不用接收返回值,这样就可以省些缓存.(虽然省的缓存非常小,但是什么事都是从小事做起的)
3、你的SQL语句拼接的错误,你有没有发现"select * from"+str;拼接起来之后是什么样子? string转换成sql之后,select * fromsysusers;这个就是你的SQL语句.表名和from连接在一起了,当然就出现了语法错误.所以,你需要在from之后,或者sysusers之前加上一个空格.
4、 Console.WriteLine(set.Tables[0]);我不知道你要输出的是什么,但是在这里,你是把一个表输出,我不知道也没试过,会输出什么,但是,绝对不是正确的数据. Console.WriteLine(set.Tables[0].Rows[0][0].ToString());只有这样,你才能输出这个表中的第一行,第一列的数据.
不好意思,说了你那么多,但是,我看到这样的代码,很伤心.希望你以后注意到自己的问题.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
culive
2011-03-11
知道答主
回答量:26
采纳率:0%
帮助的人:13.3万
展开全部
public void db_conn()
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
改成
public Class1()
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
conn得先赋值哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友801b91b
2011-03-11 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1690万
展开全部
public DataTable db_conn_table(string )
这个函数里没有对db赋值,所以返回的是null。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式