OleDB可以正常运行:   
   private const string SELECTUSERNAMESTRING = "Select * from Users where  username=?";
    private OleDbCommand cmd = null;
    private OleDbConnection ole_con;    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataSet data = GetUsersData("test");
        string a;
        a = data.Tables["Users"].Rows[0]["EMPID"].ToString();
        return;
    }    private void BuildCommand(CommandType ctype, string storedProcName, IDataParameter[] parms)
    {
        cmd.CommandType = ctype;
        cmd.CommandText = storedProcName;
        cmd.Parameters.Clear();
        //cmd.CommandText = "Select * from Users where  username='test'";
        //return;
        if (parms != null)
        {
            foreach (IDataParameter parm in parms)
            {
                cmd.Parameters.Add(parm);
            }
        }    }
    public void Open()
    {
        string s;
        s = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;password= ;Initial Catalog=zhuzhoudbbus;Data Source=192.168.0.17";
        ole_con = new OleDbConnection(s);
        cmd = ole_con.CreateCommand();
    }     public DataSet GetUsersData(string username)
    {
        IDataParameter[] parms =
          new IDataParameter[]{new OleDbParameter("USERNAME",OleDbType.VarChar,20,"USERNAME")
                                    };
        parms[0].Value = username;
        DataSet data = new DataSet();
        RunProcedure(CommandType.Text, SELECTUSERNAMESTRING, parms, data, "Users");
        return data;
    }
 
    public void RunProcedure(CommandType ctype, string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName)
    {
        Open();        BuildCommand(ctype, storedProcName, parameters);
        OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);        adapter.Fill(dataSet, tableName);
    }
    protected void Button1_Click1(object sender, EventArgs e)
    {
        DataSet data = GetUsersData("test");
        string a;
        a = data.Tables["Users"].Rows[0]["UserID"].ToString();
         return;
    }SQL却不行:
    private const string SELECTUSERNAMESTRING = "Select * from Users where  username=?";
    private SqlCommand cmd = null;
    private SqlConnection ole_con;
       
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataSet data = GetUsersData("test");
        string a;
        a = data.Tables["Users"].Rows[0]["EMPID"].ToString();
        return;
    }    private void BuildCommand(CommandType ctype, string storedProcName, IDataParameter[] parms)
    {
        cmd.CommandType = ctype;
        cmd.CommandText = storedProcName;
        cmd.Parameters.Clear();
        //cmd.CommandText = "Select * from Users where  username='test'";
        //return;
        if (parms != null)
        {
            foreach (IDataParameter parm in parms)
            {
                cmd.Parameters.Add(parm);
            }
        }    }    public void Open()
    {
        string s;
        s = "Persist Security Info=True;User ID=sa;password= ;Initial Catalog=zhuzhoudbbus;Data Source=192.168.0.17";
        ole_con = new SqlConnection(s);
        cmd = ole_con.CreateCommand();
    }    public DataSet GetUsersData(string username)
    {
        IDataParameter[] parms =
          new IDataParameter[]{new SqlParameter("USERNAME",SqlDbType.VarChar,20,"USERNAME")
                                    };
        parms[0].Value = username;
        DataSet data = new DataSet();
        RunProcedure(CommandType.Text, SELECTUSERNAMESTRING, parms, data, "Users");
        return data;
    }    public void RunProcedure(CommandType ctype, string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName)
    {
        Open();        BuildCommand(ctype, storedProcName, parameters);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        dataSet.Tables.Add(tableName);
        adapter.Fill(dataSet, tableName);
    }请问一下是不是在SQL中不支持:“?”的用法
谢谢!

解决方案 »

  1.   

    ms sql server中参数要用@而其他的oledb是用?
      

  2.   

    数据连接方式不一样的情况下面似乎连接字符串的写法都不同,请参考connectionstrings.com
      

  3.   

    一个是用于Sql Server;
    一个是用于Access数据库.
    明白?
    还有用于Oracle的.
      

  4.   

    SqlCommand对象用于对Sql Server数据库执行命令。OleDbCommand对象用于对支持OleDb的数据库执行命令,如Oracle与Access。OdbcCommand对象用于对支持Odbc的数据库执行命令。尽管SqlCommand类是针对Sql Server的,但是这个类的许多属性、方法与事件和OleDbCommand及OdbcCommand等类相似。
      

  5.   

    ...如楼上所说:SqlCommand对象用于对Sql   Server数据库执行命令。OleDbCommand对象用于对支持OleDb的数据库执行命令,如Oracle与Access。