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);
}
}
为什么会出现语法错误 还有这样写能调出来表不?讲解详细些 展开
{
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);
}
}
为什么会出现语法错误 还有这样写能调出来表不?讲解详细些 展开
展开全部
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、不清楚可以提问
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、不清楚可以提问
展开全部
public void db_conn()
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
这个方法改下名字,改成构造方法就ok了,这个方法没有被调用,你对conn的初始化也就没有进行,所以报错了哦
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
这个方法改下名字,改成构造方法就ok了,这个方法没有被调用,你对conn的初始化也就没有进行,所以报错了哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我说说你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());只有这样,你才能输出这个表中的第一行,第一列的数据.
不好意思,说了你那么多,但是,我看到这样的代码,很伤心.希望你以后注意到自己的问题.
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());只有这样,你才能输出这个表中的第一行,第一列的数据.
不好意思,说了你那么多,但是,我看到这样的代码,很伤心.希望你以后注意到自己的问题.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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得先赋值哦
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
改成
public Class1()
{
conn = new SqlConnection("server=.;database=db_blog;uid=sa;pwd=");
}
conn得先赋值哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public DataTable db_conn_table(string )
这个函数里没有对db赋值,所以返回的是null。
这个函数里没有对db赋值,所以返回的是null。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询