c# 数据库查询问题

作者&投稿:竹楠 (若有异议请与网页底部的电邮联系)
C#数据库查询输出~

DataReader对象可以,下面是个简单例子:

//定义链接 OleDbConnection conn; //定义命令 OleDbCommand cmd; //定义datareader OleDbDataReader myreader; //定义两个变量用来存储数据库链接字符串和命令字符串 string connstr, selectcmd; private void button1_Click(object sender, EventArgs e) { connstr = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db.mdb"; selectcmd = "select * from yonghu where username='" + textBox1.Text+ "' and password='" + textBox2.Text + "'"; //实例化链接并打开 conn = new OleDbConnection(connstr); conn.Open(); //实例化cmd并制定执行语句与执行链接 cmd = new OleDbCommand(selectcmd, conn); //执行查询命令并赋给datareader myreader = cmd.ExecuteReader(); /*判断myreader中是否真的读取到了数据,也就是说查询命令是否有结果 datareader的read方法可以将数据指针移动到下一条记录上,因为datareader的数据指针刚开始位于 第一条的上方,因此第一次调用read方法的时候实际上指针指向第一条记录*/ if (myreader.Read()) { //myreader中有数据,表示给出的用户名和密码在数据库中有匹配记录 MessageBox.Show("登录成功"); //如果登录成功则取出用户名和等级填入下面的文本框中 textBox3.Text = myreader["username"].ToString(); textBox4.Text = myreader["level"].ToString(); } else { //myreader中没有数据,表示给出的用户名和密码至少有一个是错的 MessageBox.Show("登录失败!!"); } myreader.Close(); conn.Close(); }

string sql = "select * from Student where SName = ' " + textBox1.Text + "'";

SqlDataAdapter只是dataset和数据库的桥接器,不是用来放数据的,数据是放在dataset中的,你的database这个方法,应该加一句myCommand .fill(myDataSet),然后从dataset中读取数据。

public DataSet database(String bm, String b)
{
try{ //创建一个 SqlConnection对象
string strCon = "Integrated Security=SSPI;Initial Catalog='sujx';Data Source='8a8ed6caf0f3482';User ID='sa';Password='123';Connect Timeout=30";
SqlConnection myConn = new SqlConnection (strCon) ;
myConn.Open();
string strCom = " SELECT * FROM "+bm+" where "+b ; //创建一个 DataSet对象
DataSet myDataSet = new DataSet() ;

SqlDataAdapter myCommand = new SqlDataAdapter ( strCom , myConn ) ;
myCommand.fill(this.myDataSet,"bm");
myConn.Close(); //关闭连接
}
catch ( Exception ex1 ) {
Console.WriteLine( "本地SQL数据库连接失败");
Console.WriteLine("连接本地SQL数据库发生错误:" + ex1.ToString(), "错误!");
}

}

你的错误应该是2个
1、Cannot convert type 'void' to 'System.Data.SqlClient.SqlDataAdapter'
这个错误发生在:SqlDataAdapter bbb = (SqlDataAdapter)aaa.database("xtbm", "htbh='" + m_st + "'");

因为你的 database 方法的返回类型是 void,没有返回值。
而你在 SqlDataAdapter bbb = (SqlDataAdapter)aaa.database("xtbm", "htbh='" + m_st + "'"); 这里又让它返回一个 SqlDataAdapter,所以出错了。

2、No overload for method 'GetType' takes '1' arguments

这个错误应该在编译的时候就有提示了 stt = bbb.GetType("xtmc");

GetType()这个方法没有参数,而写了,所以报错。

解决第一个错误你可以这样写
SqlDataAdapter myCommand;
public SqlDataAdapter database( String bm, String b )
{
try
{ //创建一个 SqlConnection对象
string strCon = "Integrated Security=SSPI;Initial Catalog='sujx';Data Source='8a8ed6caf0f3482';User ID='sa';Password='123';Connect Timeout=30";
SqlConnection myConn = new SqlConnection( strCon );
myConn.Open();
string strCom = " SELECT * FROM " + bm + " where " + b; //创建一个 DataSet对象
// myDataSet = new DataSet() ;

myCommand = new SqlDataAdapter( strCom, myConn );
myConn.Close(); //关闭连接
return myCommand;
}
catch( Exception ex1 )
{
Console.WriteLine( "本地SQL数据库连接失败" );
Console.WriteLine( "连接本地SQL数据库发生错误:" + ex1.ToString(), "错误!" );
return myCommand;
}
}

第二个错误,你这样写bbb.GetType();

SqlDataAdapter bbb = (SqlDataAdapter)aaa.database("xtbm", "htbh='" + m_st + "'");
这一行要求 aaa.database("xtbm", "htbh='" + m_st + "'")方法返回的是一个可被转换为SqlDataAdapter 类型的对象,但你在database()方法中并没有返回类型,实际是void,所以报错.
再者,database()方法写得也不完善

public void database(String bm, String b)
这里不能用void

Void非全局!

1、你的database方法中有两个参数,你调用的时候却只写了一个参数
2、你的database方法没有返回值为void类型,怎么能在调用的时候强制转换为sqlDataAdpater类型呢


永清县18470755710: C#中的查询数据库问题 -
韦卞衍行: 先查出标识为5的一行数据 放到dataset里DataSet ds=new DataSet();然后 txtage.text=ds.Tables[0].Rows[0]["A"].toString();...

永清县18470755710: C# 查询数据库问题?
韦卞衍行: 你所说的空值是,null吗?还是别的,比如DBNULL之类的,==null就一定得是null 才会相等啊, sring.Empty 可不等于null ,但它等于"" 如果是查询,那么查询后,就算没有找到任何数据,应该返回的是一个空记录集,而不是null

永清县18470755710: C# 数据库查询问题?
韦卞衍行: 这很简单啊,来个if判断DataSet.Tables[0].Rows.Count等于0的话表示没有记录就不执行

永清县18470755710: 我想问下C#中 数据库查询的问题 我下面的这程序能通过编译但运行时候有个地方报错 -
韦卞衍行: SqlDataReader.Item返回的是列不是表string name=dr["name"].ToString();//这里应该是表的列名而不是表名

永清县18470755710: c# 数据库查询返回值问题 -
韦卞衍行: 用ADO.NET SqlCommand cmd = new SqlCommand(sql); string st = cmd.ExecuteScalar().ToString(); 其中:new SqlCommand(sql) 中的参数是你的SQL语句.ExecuteScalar() 是返回查询结果的第一行第一列的值.

永清县18470755710: C#连接数据库查询问题 -
韦卞衍行: 1. where前应该有空格2. 应该是select count(*) from ...,因为如果一行都没有,返回null,如果不止一行,返回列表,都不适合ExecuteScalar

永清县18470755710: c# 中数据库查询问题(判断为空) -
韦卞衍行: if(myDataset.Tables[0].Rows.Count == 0){ //这个myDataset为空}

永清县18470755710: c# 查找问题的方法 -
韦卞衍行: 断点调试!想要在哪一步断,把光标移到那,按F9加一个断点,然后你可以看相应的数据!要一步一步继续往下,按F11!要继续运行,直接按F5!希望对你有帮助!

永清县18470755710: C#中SQL数据库查询问题 -
韦卞衍行: string sql = "select * from a where id='" + TextBox1.Text + "'"; String ConnStr ="";//你自己数据库连接 DataTable dt = new DataTable(); try { using (SqlConnection conn = new SqlConnection(ConnStr)) { SqlDataAdapter da = new ...

永清县18470755710: 关于c#里的查询功能的问题
韦卞衍行: 不建议用控件,如果你对ADO不是非常了解.建议你手动代码: using (SqlDataAdapter adapter = new SqlDataAdapter("select 你的字段1,字段2,……,字段n from xxx where 字段="+你要过滤的数值, new SqlConnection("你的数据库连接字符串"))) {DataTable dt = new DataTable();adapter.Fill(dt);dataGridView.DataSource = dt; } 第二个问题:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网