各位好,用C#连接数据库,表中有两列是wav,element。按条件查询时wav能查询到,element不能。程序如下,求指教。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;namespace database2
{
    class Program
    {
        static void Main(string[] args)
        {
            MySqlConnection conn; // mysql连接 
            MySqlDataAdapter myadp,myadp1; // mysql数据适配器 
            DataSet myds,myds1; // 数据集
            DataTable mytable,mytable1;
            string MyConnectionString;
            MyConnectionString = "server = localhost; uid = root; pwd = mysql; database = spec_line";
            double X = 318.115;
            try
            {
                //打开菜单配置数据库连接 
                conn = new MySqlConnection(); // 实例化数据库连接(instanced) 
                conn.ConnectionString = MyConnectionString; // 配置连接(configured) 
                conn.Open(); // 打开连接(opened) 
                myadp = new MySqlDataAdapter("select * from spec_line where Wav >305.12, conn);
                mytable = new DataTable();
                myds = new DataSet();
                // 填充和绑定数据 
                myadp.Fill(mytable);
                int col = mytable.Columns.Count;
                foreach (DataRow item in mytable.Rows)
                {
                    for (int i = 0; i < col; i++)
                    {
                        Console.Write(item[i].ToString() + "  ");
                    }
                    Console.WriteLine();
                }
             
                myadp1 = new MySqlDataAdapter("select * from spec_line where Element = Ca", conn);
                mytable1 = new DataTable();
                myds1 = new DataSet();
                // 填充和绑定数据 
                myadp1.Fill(mytable1);
                int col1 = mytable1.Columns.Count;
                foreach (DataRow item1 in mytable1.Rows)
                {
                    for (int j = 0; j < col1; j++)
                    {
                        Console.Write(item1[j].ToString() + "  ");
                    }
                    Console.WriteLine();
                }
                Console.ReadKey();
            }            catch (MySqlException ex)
            {
                switch (ex.Number)
                {
                    case 0:
                        Console.WriteLine("不能连接到数据库服务器,请联系数据库管理员!"); break;
                    case 1045:
                        Console.WriteLine("无效的用户名/密码,请重试!"); break;
                    case 1049:
                        Console.WriteLine("数据库不存在,或数据库名错误"); break;
                    default:
                        Console.WriteLine(ex.Message); break;
                }
            }
        }
    }
}
谢谢。

解决方案 »

  1.   

    控制台输出,说没有“Ca”这一列,我select语句是查询Element列啊。前一种查询Wav都能显示,第二种为什么不行啊。
      

  2.   

    你的参数值是字符,下面的SQL语句里面应该加上左右引号
    myadp1 = new MySqlDataAdapter("select * from spec_line where Element = Ca", conn);
    =》
    myadp1 = new MySqlDataAdapter("select * from spec_line where Element = ‘Ca’", conn);
      

  3.   

    谢谢啦,那这样怎么改呢
     myadp1 = new MySqlDataAdapter("select * from spec_line where Element = " + mytable.Rows[0][1].ToString(), conn);
    因为值不是固定的‘Ca’.是需要mytable.Rows[0][1].ToString()得到的。
      

  4.   


     myadp1 = new MySqlDataAdapter("select * from spec_line where Element = '" + mytable.Rows[0][1].ToString()+"'", conn);
    //或者使用string.Format();
    myadp1 = new MySqlDataAdapter(string.Format("select * from spec_line where Element = '{0}'",mytable.Rows[0][1].ToString()), conn);