反射+自定义属性拼接sql
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="StrConn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/Access/changqing.mdb;Persist Security Info=True"/>
</appSettings>
</configuration>
public class AuthorAttribute:Attribute
{
public string name;
public string codeName;
public string dataType;
public string dataWidth;
public string dataPrecision;
}
[AttributeUsageAttribute(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class TableAttribute : Attribute
{
private string name;
//保存表名的字段
private string _tableName;
public TableAttribute()
{
}
public TableAttribute(string name, string tableName)
{
this.name = name;
this._tableName = tableName;
}
/// <summary>
/// 映射的表名(表的全名:模式名.表名)
/// </summary>
public string TableName
{
set
{
this._tableName = value;
}
get
{
return this._tableName;
}
}
public string Name
{
get { return name; }
set { name = value; }
}
}
public class DataClass
{
[Table("钻井基本数据","WEBSYSOLD_E001")]
public class E001
{
#region 字段定义
private string jh; //井号
private string dlwz; //地理位置
private string gzwz; //构造位置
private string sywz; //水域位置
private string dmhb; //地面海拔
private string jb; //井别
private string jx; //井型
private string zjfs; //钻井方式
private string jkzzbx; //井口纵坐标X
private string jkhzby; //井口横坐标Y
private string zymdc; //主要目的层
private string ktbl; //勘探类别
#endregion
#region 属性定义
[Author(name ="井号", codeName ="JH", dataType="C", dataWidth="16")]
public string Jh
{
get { return jh; }
set { jh = value; }
}
[Author(name = "地理位置", codeName = "DLWZ", dataType = "C", dataWidth = "50")]
public string Dlwz
{
get { return dlwz; }
set { dlwz = value; }
}
[Author(name = "构造位置", codeName = "GZWZ", dataType = "C", dataWidth = "50")]
public string Gzwz
{
get { return gzwz; }
set { gzwz = value; }
}
[Author(name = "水域位置", codeName = "SYWZ", dataType = "C", dataWidth = "40")]
public string Sywz
{
get { return sywz; }
set { sywz = value; }
}
[Author(name = "地面海拔", codeName = "DMHB", dataType = "N", dataWidth = "6",dataPrecision="2")]
public string Dmhb
{
get { return dmhb; }
set { dmhb = value; }
}
[Author(name = "井别", codeName = "JB", dataType = "C", dataWidth = "10")]
public string Jb
{
get { return jb; }
set { jb = value; }
}
[Author(name = "井型", codeName = "JX", dataType = "C", dataWidth = "10")]
public string Jx
{
get { return jx; }
set { jx = value; }
}
[Author(name = "钻井方式", codeName = "ZJFS", dataType = "C", dataWidth = "14")]
public string Zjfs
{
get { return zjfs; }
set { zjfs = value; }
}
[Author(name = "井口纵坐标X", codeName = "JKZZBX", dataType = "N", dataWidth = "10",dataPrecision="2")]
public string Jkzzbx
{
get { return jkzzbx; }
set { jkzzbx = value; }
}
[Author(name = "井口横坐标Y", codeName = "JKHZBY", dataType = "N", dataWidth = "11", dataPrecision = "2")]
public string Jkhzby
{
get { return jkhzby; }
set { jkhzby = value; }
}
[Author(name = "主要目的层", codeName = "ZYMDC", dataType = "C", dataWidth = "40")]
public string Zymdc
{
get { return zymdc; }
set { zymdc = value; }
}
[Author(name = "勘探类别", codeName = "KTLB", dataType = "C", dataWidth = "50")]
public string Ktbl
{
get { return ktbl; }
set { ktbl = value; }
}
#endregion
}
[Table("钻井完井基本数据","WEBSYSOLD_E002")]
public class E002
{
#region 字段定义
private string jh; //井号
private string zjsgdw; //钻井施工单位
private string kzrq; //开钻日期
private string wzrq; //完钻日期
private string wjrq; //完井日期
private string bxhb; //补心海拔
private string wzjs; //完钻井深
private string wzcw; //完钻层位
private string jj; //井径
private string ybj; //油补距
private string tbj; //套补距
private string rgjd; //人工井底
private string snsfsd; //水泥上返深度
private string jdwy; //井底位移
private string wyfw; //位移方位
private string gjzl; //固井质量
private string wjff; //完井方法代码
#endregion
#region 属性定义
[Author(name = "井号", codeName = "JH", dataType = "C", dataWidth = "16")]
public string Jh
{
get { return jh; }
set { jh = value; }
}
[Author(name = "钻井施工单位", codeName = "ZJSGDW", dataType = "C", dataWidth = "40")]
public string Zjsgdw
{
get { return zjsgdw; }
set { zjsgdw = value; }
}
[Author(name = "开钻日期", codeName = "KZRQ", dataType = "D")]
public string Kzrq
{
get { return kzrq; }
set { kzrq = value; }
}
[Author(name = "完钻日期", codeName = "WZRQ", dataType = "D")]
public string Wzrq
{
get { return wzrq; }
set { wzrq = value; }
}
[Author(name = "完井日期", codeName = "WJRQ", dataType = "D")]
public string Wjrq
{
get { return wjrq; }
set { wjrq = value; }
}
[Author(name = "补心海拔", codeName = "BXHB", dataType = "N", dataWidth = "7",dataPrecision="2")]
public string Bxhb
{
get { return bxhb; }
set { bxhb = value; }
}
[Author(name = "完钻井深", codeName = "WZJS", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Wzjs
{
get { return wzjs; }
set { wzjs = value; }
}
[Author(name = "完钻层位", codeName = "WZCW", dataType = "C", dataWidth = "20")]
public string Wzcw
{
get { return wzcw; }
set { wzcw = value; }
}
[Author(name = "井径", codeName = "JJ", dataType = "N", dataWidth = "5", dataPrecision = "2")]
public string Jj
{
get { return jj; }
set { jj = value; }
}
[Author(name = "油补距", codeName = "YBJ", dataType = "N", dataWidth = "5", dataPrecision = "2")]
public string Ybj
{
get { return ybj; }
set { ybj = value; }
}
[Author(name = "套补距", codeName = "TBJ", dataType = "N", dataWidth = "5", dataPrecision = "2")]
public string Tbj
{
get { return tbj; }
set { tbj = value; }
}
[Author(name = "人工井底", codeName = "RGJD", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Rgjd
{
get { return rgjd; }
set { rgjd = value; }
}
[Author(name = "水泥上返深度", codeName = "SNSFSD", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Snsfsd
{
get { return snsfsd; }
set { snsfsd = value; }
}
[Author(name = "井底位移", codeName = "JDWY", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Jdwy
{
get { return jdwy; }
set { jdwy = value; }
}
[Author(name = "位移方位", codeName = "WYFW", dataType = "N", dataWidth = "6", dataPrecision = "2")]
public string Wyfw
{
get { return wyfw; }
set { wyfw = value; }
}
[Author(name = "固井质量", codeName = "GJZL", dataType = "C", dataWidth = "8")]
public string Gjzl
{
get { return gjzl; }
set { gjzl = value; }
}
[Author(name = "完井方法代码", codeName = "WJFF", dataType = "C", dataWidth = "2")]
public string Wjff
{
get { return wjff; }
set { wjff = value; }
}
#endregion
}
[Table("套管程序数据","WEBSYSOLD_E004")]
public class E004
{
#region
private string jh; //井号
private string tgmc; //套管名称
private string tgwj; //套管外径
private string ldjfr; //联顶节方入
private string cxdw; //磁性定位
private string fzqgs; //扶正器个数
private string xrjs; //下入井深
private string tbj; //套补距
private string tgzc; //套管总长
private string zlhsd1; //阻流环深度11
private string zlhsd2; //阻流环深度2
private string zlhsd3; //阻流环深度3
#endregion
#region
[Author(name = "井号", codeName = "JH", dataType = "C", dataWidth = "16")]
public string Jh
{
get { return jh; }
set { jh = value; }
}
[Author(name = "套管名称", codeName = "TGMC", dataType = "C", dataWidth = "12")]
public string Tgmc
{
get { return tgmc; }
set { tgmc = value; }
}
[Author(name = "套管外径", codeName = "TGWJ", dataType = "N", dataWidth = "5", dataPrecision = "2")]
public string Tgwj
{
get { return tgwj; }
set { tgwj = value; }
}
[Author(name = "联顶节方入", codeName = "LDJFR", dataType = "N", dataWidth = "5", dataPrecision = "2")]
public string Ldjfr
{
get { return ldjfr; }
set { ldjfr = value; }
}
[Author(name = "磁性定位", codeName = "CXDW", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Cxdw
{
get { return cxdw; }
set { cxdw = value; }
}
[Author(name = "扶正器个数", codeName = "FZQGS", dataType = "N", dataWidth = "2")]
public string Fzqgs
{
get { return fzqgs; }
set { fzqgs = value; }
}
[Author(name = "下入井深", codeName = "XRJS", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Xrjs
{
get { return xrjs; }
set { xrjs = value; }
}
[Author(name = "套补距", codeName = "TBJ", dataType = "N", dataWidth = "5", dataPrecision = "2")]
public string Tbj
{
get { return tbj; }
set { tbj = value; }
}
[Author(name = "套管总长", codeName = "TGZC", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Tgzc
{
get { return tgzc; }
set { tgzc = value; }
}
[Author(name = "阻流环深度1", codeName = "ZLHSD1", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Zlhsd1
{
get { return zlhsd1; }
set { zlhsd1 = value; }
}
[Author(name = "阻流环深度2", codeName = "ZLHSD2", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Zlhsd2
{
get { return zlhsd2; }
set { zlhsd2 = value; }
}
[Author(name = "阻流环深度3", codeName = "ZLHSD3", dataType = "N", dataWidth = "7", dataPrecision = "2")]
public string Zlhsd3
{
get { return zlhsd3; }
set { zlhsd3 = value; }
}
#endregion
}
}
public class TableInfo
{
private Type type;
private string name;
private string codeName;
public string CodeName
{
get { return codeName; }
set { codeName = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public Type Type
{
get { return type; }
set { type = value; }
}
}
/// <summary>
/// 表信息类
/// </summary>
public class ReflectionData
{
private TableInfo tb_Info;
private ArrayList tableInfos = new ArrayList();
private ArrayList fieldInfos = new ArrayList();
/// <summary>
/// 表字段信息组
/// </summary>
public ArrayList FieldInfos
{
get { return fieldInfos; }
set { fieldInfos = value; }
}
/// <summary>
/// 表信息组
/// </summary>
public ArrayList TableInfos
{
get { return tableInfos; }
set { tableInfos = value; }
}
/// <summary>
/// 根据字符串反射类型集
/// </summary>
/// <param name="str"></param>
public void GetTableNames(string str)
{
Assembly asm = Assembly.Load(str);
Type[] type = asm.GetTypes();
foreach (Type temp in type)
{
TableAttribute[] attributes = (TableAttribute[])temp.GetCustomAttributes(typeof(TableAttribute), false);
if (attributes.Length == 1)
{
tb_Info = new TableInfo();
tb_Info.Type = temp;
tb_Info.Name = attributes[0].Name;
tb_Info.CodeName = attributes[0].TableName;
tableInfos.Add(tb_Info);
}
}
}
/// <summary>
/// 根据类型得到属性自定义属性信息
/// </summary>
/// <param name="type"></param>
public void GetFieldNames(Type type)
{
PropertyInfo[] myProperty = type.GetProperties();
foreach (PropertyInfo property in myProperty)
{
AuthorAttribute[] p_Temp=( AuthorAttribute[])property.GetCustomAttributes(typeof( AuthorAttribute), false);
if (p_Temp.Length == 1)
{
fieldInfos.Add(p_Temp);
}
}
}
}
public interface IDataAccess
{
int SelectFullId(ref ArrayList list);
int SelectInfo(ref ArrayList list, string id);
int SelectInfo(ref ArrayList list, ArrayList m_list);
int SelectFullInfo(ref ArrayList list);
}
public class OperateAccess : IDataAccess
{
#region 声明操作对象
/// <summary>
///
/// </summary>
public ReflectionData RefData = new ReflectionData();
/// <summary>
/// 记录当前表名
/// </summary>
public string nowTable = null;
/// <summary>
/// 声明连接对象
/// </summary>
protected OleDbConnection oleConn=null;
/// <summary>
/// 命令对象
/// </summary>
protected OleDbCommand oleCmd=null;
/// <summary>
/// 适配器对象
/// </summary>
protected OleDbDataAdapter oleDataAdapter=null;
/// <summary>
/// 读取器对象
/// </summary>
protected OleDbDataReader oleDataReader = null;
#endregion
/// <summary>
/// 打开数据库连接
/// </summary>
/// <param name="strCon">连接字符串</param>
/// <returns>操作是否成功</returns>
public int OpenConnection()
{
try
{
if (oleConn.State == ConnectionState.Closed)
{
this.oleConn.Open();
}
return 0;
}
catch
{
return -1;
}
}
/// <summary>
/// 关闭数据库连接
/// </summary>
/// <returns>操作是否成功</returns>
public int CloseConnection()
{
try
{
if (oleConn.State == ConnectionState.Open)
{
oleConn.Close();
}
return 0;
}
catch
{
return -1;
}
}
/// <summary>
/// 数据库是否连接
/// </summary>
public bool IsDbopen
{
get
{
return oleConn.State == ConnectionState.Open ? true : false;
}
}
#region 默认构造函数
/// <summary>
/// 默认构造函数
/// </summary>
public OperateAccess()
{
oleConn = new OleDbConnection(ConfigurationSettings.AppSettings["StrConn"].ToString());
oleCmd = new OleDbCommand();
}
#endregion
#region IDataAccess 成员
public int SelectFullId(ref ArrayList list)
{
if (nowTable != null)
{
StringBuilder sb = new StringBuilder();
AuthorAttribute[] a_temp = (AuthorAttribute[])RefData.FieldInfos[0];
sb.Append("select " + a_temp[0].codeName + " from " + nowTable);
if (oleConn.State == ConnectionState.Closed)
{
oleConn.Open();
}
oleCmd.Connection = oleConn;
oleCmd.CommandType = CommandType.Text;
oleCmd.CommandText = sb.ToString(); ;
oleDataReader = oleCmd.ExecuteReader();
while (oleDataReader.Read())
{
object[] values = new object[oleDataReader.FieldCount];
oleDataReader.GetValues(values);
list.Add(values);
}
oleDataReader.Dispose();
oleConn.Close();
return 0;
}
else
{
MessageBox.Show("请选择数据表");
return -1;
}
}
public int SelectInfo(ref ArrayList list, string id)
{
if (nowTable != null)
{
StringBuilder sb = new StringBuilder();
AuthorAttribute[] a_temp = (AuthorAttribute[])RefData.FieldInfos[0];
sb.Append("select ");
for (int i = 0; i < RefData.FieldInfos.Count; i++)
{
if (RefData.FieldInfos[i] is AuthorAttribute[])
{
AuthorAttribute[] temp = (AuthorAttribute[])RefData.FieldInfos[i];
sb.Append(temp[0].codeName);
if (i != RefData.FieldInfos.Count - 1)
{
sb.Append(",");
}
}
}
sb.Append(" from " + nowTable);
sb.Append(" where " + a_temp[0].codeName + "=" + "'"+id+"'");
if (oleConn.State == ConnectionState.Closed)
{
oleConn.Open();
}
oleCmd.Connection = oleConn;
oleCmd.CommandType = CommandType.Text;
oleCmd.CommandText = sb.ToString(); ;
oleDataReader = oleCmd.ExecuteReader();
while (oleDataReader.Read())
{
object[] values = new object[oleDataReader.FieldCount];
oleDataReader.GetValues(values);
list.Add(values);
}
oleDataReader.Dispose();
oleConn.Close();
return 0;
}
else
{
MessageBox.Show("请选择数据表");
return -1;
}
}
public int SelectInfo(ref ArrayList list, ArrayList m_list)
{
if (nowTable != null)
{
StringBuilder sb = new StringBuilder();
AuthorAttribute[] a_temp = (AuthorAttribute[])RefData.FieldInfos[0];
foreach (object str in m_list)
{
sb.Remove(0, sb.Length);
sb.Append("select ");
for (int i = 0; i < RefData.FieldInfos.Count; i++)
{
if (RefData.FieldInfos[i] is AuthorAttribute[])
{
AuthorAttribute[] temp = (AuthorAttribute[])RefData.FieldInfos[i];
sb.Append(temp[0].codeName);
if (i != RefData.FieldInfos.Count - 1)
{
sb.Append(",");
}
}
}
sb.Append(" from " + nowTable);
sb.Append(" where " + a_temp[0].codeName + "=" + "'" + str.ToString() + "'");
if (oleConn.State == ConnectionState.Closed)
{
oleConn.Open();
}
oleCmd.Connection = oleConn;
oleCmd.CommandType = CommandType.Text;
oleCmd.CommandText = sb.ToString(); ;
oleDataReader = oleCmd.ExecuteReader();
while (oleDataReader.Read())
{
object[] values = new object[oleDataReader.FieldCount];
oleDataReader.GetValues(values);
list.Add(values);
}
oleDataReader.Dispose();
oleConn.Close();
}
return 0;
}
else
{
MessageBox.Show("请选择数据表");
return -1;
}
}
public int SelectFullInfo(ref ArrayList list)
{
if (nowTable != null)
{
StringBuilder sb = new StringBuilder();
AuthorAttribute[] a_temp = (AuthorAttribute[])RefData.FieldInfos[0];
sb.Append("select ");
for (int i = 0; i < RefData.FieldInfos.Count; i++)
{
if (RefData.FieldInfos[i] is AuthorAttribute[])
{
AuthorAttribute[] temp = (AuthorAttribute[])RefData.FieldInfos[i];
sb.Append(temp[0].codeName);
if (i != RefData.FieldInfos.Count - 1)
{
sb.Append(",");
}
}
}
sb.Append(" from " + nowTable);
if (oleConn.State == ConnectionState.Closed)
{
oleConn.Open();
}
oleCmd.Connection = oleConn;
oleCmd.CommandType = CommandType.Text;
oleCmd.CommandText = sb.ToString(); ;
oleDataReader = oleCmd.ExecuteReader();
while (oleDataReader.Read())
{
object[] values = new object[oleDataReader.FieldCount];
oleDataReader.GetValues(values);
list.Add(values);
}
oleDataReader.Dispose();
oleConn.Close();
return 0;
}
else
{
MessageBox.Show("请选择数据表");
return -1;
}
}
#endregion
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace WindowsForms827
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private OperateAccess mypop = new OperateAccess();
private ArrayList m_List = new ArrayList();
private void Form1_Load(object sender, EventArgs e)
{
mypop.RefData.GetTableNames("WindowsForms827");
foreach (object obj in mypop.RefData.TableInfos)
{
if (obj is TableInfo)
{
TableInfo temp = (TableInfo)obj;
TreeNode node = new TreeNode(temp.Name);
node.Tag = temp;
this.treeView1.Nodes.Add(node);
}
}
}
/// <summary>
/// 双击选择当前操作表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Tag is TableInfo)
{
TableInfo m_tableInfo = (TableInfo)e.Node.Tag;
if (mypop.nowTable != "" && mypop.nowTable != m_tableInfo.CodeName)//判断当前表名与上一次表名是否相同
{
// this.textBox1.Text = m_tableInfo.Name;
mypop.RefData.FieldInfos.Clear();//清空
listView2.Items.Clear(); //清空
listView1.Columns.Clear(); //清空 防止数据叠加
mypop.nowTable = m_tableInfo.CodeName;//获取当前操作表
this.label1.Visible = true;
this.label1.Text = m_tableInfo.Name;
mypop.RefData.GetFieldNames(m_tableInfo.Type); //得到当前表的字段信息 存在FieldInfos中
foreach (object obj in mypop.RefData.FieldInfos)
{
if (obj is AuthorAttribute[])
{
AuthorAttribute[] a_temp = (AuthorAttribute[])obj;
this.listView1.Columns.Add(a_temp[0].name, 80);
}
}
ListViewItem item;
this.listView1.Items.Clear();
m_List.Clear();
mypop.SelectFullId(ref m_List);
if (m_List != null)
{
foreach (object obj in m_List)//循环填充数据
{
object[] objArray = (object[])obj;
item = new ListViewItem(objArray[0].ToString());
for (int i = 1; i < objArray.Length; i++)
{
item.SubItems.Add(objArray[i].ToString());
}
if (item != null)
{
listView2.Items.Add(item);
item = null;
}
}
}
}
}
else
{
MessageBox.Show("请选择数据表");
}
}
/// <summary>
/// 查询选中得到井号信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
ArrayList tempList = new ArrayList();
if (mypop.nowTable != null)
{
for (int i = 0; i < listView2.Items.Count; i++)
{
if (listView2.Items[i].Checked)
{
tempList.Add(listView2.Items[i].Text);
}
}
ListViewItem item;
this.listView1.Items.Clear();
m_List.Clear();
mypop.SelectInfo(ref m_List, tempList);
if (m_List != null)
{
foreach (object obj in m_List)
{
object[] objArray = (object[])obj;
item = new ListViewItem(objArray[0].ToString());
for (int i = 1; i < objArray.Length; i++)
{
item.SubItems.Add(objArray[i].ToString());
}
if (item != null)
{
listView1.Items.Add(item);
item = null;
}
}
}
}
else
{
MessageBox.Show("请选择数据表");
}
}
/// <summary>
/// 查询表全部信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
if (mypop.nowTable != null)
{
ListViewItem item;
this.listView1.Items.Clear();
m_List.Clear();
mypop.SelectFullInfo(ref m_List);
if (m_List != null)
{
foreach (object obj in m_List)
{
object[] objArray = (object[])obj;
item = new ListViewItem(objArray[0].ToString());
for (int i = 1; i < objArray.Length; i++)
{
item.SubItems.Add(objArray[i].ToString());
}
if (item != null)
{
listView1.Items.Add(item);
item = null;
}
}
}
}
else
{
MessageBox.Show("请选择数据表");
}
}
/// <summary>
/// 双击事件(当双击listView2中的井号,查询双击的井号信息)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView2_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewItem item;
ListViewItem tempItem = this.listView2.GetItemAt(e.X, e.Y);
if (tempItem != null)
{
this.listView1.Items.Clear();
m_List.Clear();
mypop.SelectInfo(ref m_List, tempItem.Text);
if (m_List != null)
{
foreach (object obj in m_List)
{
object[] objArray = (object[])obj;
item = new ListViewItem(objArray[0].ToString());
for (int i = 1; i < objArray.Length; i++)
{
item.SubItems.Add(objArray[i].ToString());
}
if (item != null)
{
listView1.Items.Add(item);
item = null;
}
}
}
}
}
}
}
反射+自定义属性拼接sql相关推荐
- 【java注解--使用注解封装自动拼接sql 】
java注解全面解析--实例 使用注解封装自动拼接sql 1.定义注解类 TableName: 用来注解 表名 ,拥有一个属性 value 将适用范围定为:TYPE Class, interfac ...
- python sql拼接_python 字典 拼接SQL语句
def gen_sql(table_name, data): """ :param table_name: 表名称 :param data: 字典对象 key为字段(要与 ...
- JSP Servlet 实现模糊动态查询并分页(拼接Sql)
需求: 根据两个条件查询. 根据查询的结果分页,并记住查询条件. 大体流程是这样的: 第一次打开时,默认分页显示所有信息,这时候点击末页会取到最后一页数据. 当填写或选择了查询条件时,根据条件取出符合 ...
- CPQuery, 解决拼接SQL的新方法
CPQuery, 解决拼接SQL的新方法 参考文章: (1)CPQuery, 解决拼接SQL的新方法 (2)https://www.cnblogs.com/fish-li/archive/2012/0 ...
- tp3.2.3实现后台的顶部栏目查询,不用拼接sql
一.背景 基本所有的后台部分,都需要一定的搜索条件,方便客服人员进行搜索.因为对tp不太熟悉,所以也耽误了不少时间.记录一下 二.查询方法 1.以前用laravel查询,都是用类似于拼接sql的方法做 ...
- win32汇编实现拼接SQL语句
字符串合并,在汇编语言,一般是用loop循环和cx寄存器,自己编程实现: 如果是win32汇编,可以使用movsb指令: 一般开发应用程序都会碰到拼接SQL语句,在C#这些语言用字符串连接的加号就可以 ...
- 5单个编译总会编译全部_JDBC【5】 JDBC预编译和拼接Sql对比
在jdbc中,有三种方式执行sql,分别是使用Statement(sql拼接),PreparedStatement(预编译),还有一种CallableStatement(存储过程),在这里我就不介绍C ...
- ireport模块之间的动态传参及拼接SQL
1.有些业务逻辑需要在ireport中判断.所以经常将拼接SQL的任务由Parameters的Default Value Expression来完成 ,如果有子模版,则在子模版参数里面处理,怎么将SQ ...
- 评“CPQuery, 解决拼接SQL的新方法”
评"CPQuery, 解决拼接SQL的新方法" 参考文章: (1)评"CPQuery, 解决拼接SQL的新方法" (2)https://www.cnblogs. ...
- MyBatis→SqlSession、sqlMapConfig.xml、映射XML文件、OGNL、拼接SQL标签、取值查值、批量SQL、一对多多对一多对多
官网 https://mybatis.org/mybatis-3/ SqlSession sqlMapConfig.xml OGNL XML拼接SQL标签 参数取值 预编译与直接赋值 编码规范 sel ...
最新文章
- java课程设计日历记事本代码,已开源
- libvirt-adabddad
- App设计灵感之十二组精美的地图导航App设计案例
- 安全套接层Secure Sockets Layer,SSL
- android覆盖扩散动画,[Android]多层波纹扩散动画——自定义View绘制
- 面 试 细 节 一 点 通
- 考前一个月,不,只剩29天
- automake的使用1
- PHP应用memcache函数详解
- getElementsByName和getElementByID
- 代码分析测试SaaS平台Code Climate获得450万美元A轮融资
- mysql 主键 外键
- Beyong Compare4过期解决办法
- 骑行318、 2016.7.31
- python量化交易--因子选股策略
- android studio迁移,AndroidStudio 一键迁移至 AndroidX
- Games101学习笔记(一)
- shell中初始化数组并遍历数组
- Java和部门管理的那些事情
- 德鲁依历史全记录—异民族魔法师
热门文章
- 毕业即失业,转行软件测试的辛酸泪只有自己知道
- java咖啡机_JAVA咖啡机2010款
- https://github.com/liuyi01/kubernetes-starterhttps://github.com/liuyi01/kubernetes-starter
- 一个VC编写的虚拟桌面软件
- 转:钉钉群直播提取视频文件-手机版
- 关于移动视频直播技术,关键干货都在这里(一)采集
- 2020双十一,阿里云GRTN拉开直播和RTC技术下半场的序幕
- Java/大数据常见面试
- 外国知名大学开放课程网址
- 银行的压力测试如何进行?