Files
FG2608061/CODE/20230901/SA17168/AGVSystem Ver2.0/Cls/ClsDBConn_sql.cs
T

259 lines
8.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
{
/// <summary>
/// 数据库操作
/// </summary>
public class ClsDBConn_sql
{
/// <summary>
/// 获取CPU运行的时间
/// </summary>
/// <returns></returns>
[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;
/// <summary>
/// 关闭连接
/// </summary>
public void ConnClosed()
{
try
{
if (sqlconn != null)
{
if (sqlconn.State == ConnectionState.Open)
{
sqlconn.Close();
}
}
}
catch
{
}
}
/// <summary>
/// 连接数据库返回dataset
/// </summary>
/// <param name="str"> SQL语句</param>
/// <returns></returns>
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 FunctionNameconnDt", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}
/// <summary>
/// 返回可更新的dataset
/// </summary>
/// <param name="str"> SQL语句</param>
/// <returns></returns>
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 FunctionNamedtEdit", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}
/// <summary>
/// 更新Dataset数据到数据库
/// </summary>
/// <param name="ds"></param>
/// <param name="adapter"></param>
/// <returns></returns>
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+"EventNamedtCommit");
return false;
}
return true;
}
/// <summary>
/// 数据库连接到datagridview
/// </summary>
/// <param name="str">sql语句</param>
/// <param name="dataGridView">datagridview控件名称</param>
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 FunctionNameconnDGV", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
/// <summary>
/// 数据库连接到datagridview,并可通过datagridview修改数据库
/// </summary>
/// <param name="str">sql语句</param>
/// <param name="dataGridView">datagridview控件名称</param>
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 FunctionNameconnDGVEdit", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
/// <summary>
/// 提交datagridview的数据
/// </summary>
/// <param name="dataGridView">datagridview控件名称</param>
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 FunctionNameDgvCommit", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
/// <summary>
/// 直接执行SQL语句
/// </summary>
/// <param name="sqlstr"></param>
/// <returns></returns>
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 FunctionNameCommand";
}
}
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();
}
}
}