using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; using System.Runtime.InteropServices; namespace AGVSystem { /// /// 数据库操作 /// public class ClsDBConn_sql { /// /// 获取CPU运行的时间 /// /// [DllImport("kernel32")] static extern uint GetTickCount(); private System.Data.DataSet dt = new System.Data.DataSet(); private SqlConnection sqlconn = new SqlConnection(Cls.Param.connectStr); private SqlDataAdapter sqladapter = null; private SqlCommandBuilder sqlcommandb = null; private SqlCommandBuilder sqlcommandb_ds = null; private BindingSource bindsource = new BindingSource(); private SqlCommand command = null; /// /// 关闭连接 /// public void ConnClosed() { try { if (sqlconn != null) { if (sqlconn.State == ConnectionState.Open) { sqlconn.Close(); } } } catch { } } /// /// 连接数据库返回dataset /// /// SQL语句 /// public System.Data.DataSet connDt(string str) { try { if (sqlconn.State != ConnectionState.Open) sqlconn.Open(); sqladapter = new SqlDataAdapter(str, sqlconn); sqlcommandb = new SqlCommandBuilder(sqladapter); if (dt.Tables.Count > 0) dt.Tables.Clear(); sqladapter.Fill(dt); return dt; } catch (Exception err) { MessageBox.Show("SQL:" + str + " , \r\n" + err.Message + " \r\n FunctionName:connDt", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } } /// /// 返回可更新的dataset /// /// SQL语句 /// public System.Data.DataSet dtEdit(string str) { try { sqladapter = new SqlDataAdapter(str, sqlconn); sqlcommandb_ds = new SqlCommandBuilder(sqladapter); if (dt.Tables.Count > 0) dt.Tables.Clear(); sqladapter.Fill(dt); return dt; } catch (Exception err) { MessageBox.Show("SQL:" + str + " , \r\n" + err.Message + " \r\n FunctionName:dtEdit", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } } /// /// 更新Dataset数据到数据库 /// /// /// /// public bool dtCommit(System.Data.DataSet ds ) { try { //Int64 t1 = GetTickCount(); int DS = ds.Tables[0].Rows.Count; sqladapter.Update(ds); //Int64 t2 = GetTickCount() - t1; //if (t2 > 2) // MessageBox.Show("update time:"+t2.ToString()); } catch { //MessageBox.Show(err.Message+"EventName:dtCommit"); return false; } return true; } /// /// 数据库连接到datagridview /// /// sql语句 /// datagridview控件名称 public bool connDGV(string str, DataGridView dgv) { try { if (sqlconn.State == ConnectionState.Open) sqlconn.Close(); sqladapter = new SqlDataAdapter(str, sqlconn); if (dt.Tables.Count > 0) dt.Tables.Clear(); sqladapter.Fill(dt); if (dt.Tables.Count > 0) dgv.DataSource = dt.Tables[0].Copy(); return true; } catch (Exception err) { MessageBox.Show("SQL:" + str + " , \r\n" + err.Message + " \r\n FunctionName:connDGV", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } /// /// 数据库连接到datagridview,并可通过datagridview修改数据库 /// /// sql语句 /// datagridview控件名称 public bool connDgvEdit(string str, DataGridView dgv) { try { if (sqlconn.State == ConnectionState.Open) sqlconn.Close(); sqladapter = new SqlDataAdapter(str, sqlconn); if (dt.Tables.Count > 0) dt.Tables.Clear(); sqladapter.Fill(dt); sqlcommandb = new SqlCommandBuilder(sqladapter); bindsource.DataSource = dt.Tables[0]; dgv.DataSource = dt.Tables[0]; dgv.DataSource = bindsource; return true; } catch (Exception err) { MessageBox.Show("SQL:" + str + " , \r\n" + err.Message + " \r\n FunctionName:connDGVEdit", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } /// /// 提交datagridview的数据 /// /// datagridview控件名称 public bool DgvCommit(DataGridView dgv) { try { dgv.EndEdit(); bindsource.EndEdit(); sqladapter.Update(dt.Tables[0]); return true; } catch (Exception err) { MessageBox.Show(err.Message + " \r\n FunctionName:DgvCommit", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } /// /// 直接执行SQL语句 /// /// /// public string Command(string sqlstr) { try { int count = 0; if (sqlconn.State != ConnectionState.Open) sqlconn.Open(); command = new SqlCommand(sqlstr, sqlconn); count = command.ExecuteNonQuery(); //sqlconn.Close(); return count.ToString(); } catch (Exception err) { return "SQL:" + sqlstr + " , \r\n" + err.Message + " \r\n FunctionName:Command"; } } public bool DtCommand(string Sqlstr, string[,] insertValue) { try { if (sqlconn.State == ConnectionState.Open) sqlconn.Close(); sqladapter = new SqlDataAdapter(Sqlstr, sqlconn); if (dt.Tables.Count > 0) dt.Tables.Clear(); sqlcommandb = new SqlCommandBuilder(sqladapter); sqladapter.Fill(dt); for (int rw = 0; rw < insertValue.GetLength(0); rw++) { System.Data.DataRow drow = dt.Tables[0].NewRow(); for (int cl = 0; cl < insertValue.GetLength(1); cl++) { drow[cl] = insertValue[rw, cl]; } dt.Tables[0].Rows.Add(drow); } sqladapter.Update(dt); sqlconn.Close(); return true; } catch (Exception err) { MessageBox.Show(err.Message, "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } public void gg() { bindsource.AddNew(); bindsource.MoveLast(); } } }