我看到在有很多人在说java中的SQL语句预编译;prepareStatement,
我想问下在C#中是不是也有这样的用法,或者类似的东西。

解决方案 »

  1.   

    一样的,sql语句保持不变(包括大小写,空格等等,需要完全一样),可以有缓存
      

  2.   

    ODBC 的select和update:
    String szQuery = "select count(*) from " + component + " where terminalid = ? and transactionid = ?";
    OdbcCommand cmd = new OdbcCommand(szQuery.ToString(), conn);
    cmd.Parameters.Add(new OdbcParameter("terminalid", OdbcType.Int)).Value = transaction.TerminalId;
    cmd.Parameters.Add(new OdbcParameter("transactionid", OdbcType.Int)).Value = transaction.Id;
    cmd.Prepare();Int64 count = 0;
    try
    {
    count = (Int64)cmd.ExecuteScalar();
    }
    String query = "update " + component + " set transactiontype = ?, transactionstate = ?, transactionsubstate = ?, updatetime = ?, transactiondata = ? where terminalid = ? and transactionid = ?";
    OdbcCommand oCommand = new OdbcCommand(query, conn);
    OdbcTransaction tx = conn.BeginTransaction();
    oCommand.Transaction = tx;
    oCommand.Parameters.Add(new OdbcParameter("transactiontype", OdbcType.VarChar)).Value = transaction.TransactionType.ToString();
    oCommand.Parameters.Add(new OdbcParameter("transactiontype", OdbcType.VarChar)).Value = transactionType;
    oCommand.Parameters.Add(new OdbcParameter("transactionstate", OdbcType.VarChar)).Value = transaction.State;
    oCommand.Parameters.Add(new OdbcParameter("transactionsubstate", OdbcType.VarChar)).Value = transaction.SubState;
    oCommand.Parameters.Add(new OdbcParameter("updatetime", OdbcType.DateTime)).Value = DateTime.Now;
    oCommand.Parameters.Add(new OdbcParameter("transactiondata", OdbcType.Text)).Value = transaction.Data;
    oCommand.Parameters.Add(new OdbcParameter("terminalid", OdbcType.Int)).Value = transaction.TerminalId;
    oCommand.Parameters.Add(new OdbcParameter("transactionid", OdbcType.Int)).Value = transaction.Id; 
    oCommand.Prepare();
    oCommand.ExecuteNonQuery();
    tx.Commit();