在java中向SQL语句传参数的示例代码如下:
PreparedStatement pstmt = con.prepareStatement( "insert into table ( id, name ) values ( ?, ? )" );  //两个问号表示这个SQL语句有两个参数
pstmt.setInt( 1, 2 );         //设第一个参数(即id)的值为整数2
pstmt.setString( 2, "tom" );  //设第二个参数(即name)的值为字符串tom
pstmt.execute();请问在ADO.NET如何实现这样的功能?请写个简单的示例

解决方案 »

  1.   

    这种问题应该先MSDN的public DataSet GetDataSetFromAdapter(
        DataSet dataSet, string connectionString, string queryString)
    {
        using (OdbcConnection connection =
            new OdbcConnection(connectionString))
        {
            OdbcDataAdapter adapter =
                new OdbcDataAdapter(queryString, connection);        // Set the parameters.
            adapter.SelectCommand.Parameters.Add(
                "@CategoryName", OdbcType.VarChar, 80).Value = "toasters";
            adapter.SelectCommand.Parameters.Add(
                "@SerialNum", OdbcType.Int).Value = 239;        // Open the connection and fill the DataSet.
            try
            {
                connection.Open();
                adapter.Fill(dataSet);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            // The connection is automatically closed when the
            // code exits the using block.
        }
        return dataSet;
    }
      

  2.   

    把?换成@参数名称,具体参见MSDN中SqlCommand的用法
      

  3.   

    java中对任何数据库都是这样写的
    oldmoon: 能不能不要写参数名啊,难道不能按照顺序来设置参数吗?MS设计得也太差了吧
      

  4.   

    .net操作Sysbase的时候用?
    SQL或者Oracle用@请参照SqlParameter
      

  5.   

    今天瞎试居然成功了哦!
    请看下面的代码:
          static void Main(string[] args) 
            { 
                String s = "Provider=msdaora;Data Source=demo;User Id=system;Password=manager;"; 
                OleDbConnection con = null; 
                OleDbCommand command = null; 
                try 
                { 
                    con = new OleDbConnection(s); 
                    con.Open(); 
                    String s1 = "insert into family ( id, xh, cyname, csrq ) values( 5, 2, ?, ? )"; 
                    command = new OleDbCommand(s1, con); 
                    OleDbParameter param1 = new OleDbParameter(); 
                    param1.Value = "haha"; 
                    command.Parameters.Add(param1); 
                    OleDbParameter param2 = new OleDbParameter(); 
                    param2.OleDbType = OleDbType.DBDate; 
                    param2.Value = new DateTime(1980, 7, 27); 
                    command.Parameters.Add(param2); 
                    command.ExecuteNonQuery(); 
                } 
                catch (Exception e) 
                { 
                    Console.WriteLine(e); 
                } 
                finally 
                { 
                    if (command != null) command.Dispose(); 
                    if (con != null) con.Close(); 
                } 
                Console.Read(); 
            }