C#数据库表格增删查改模板
我将这个窗体类作为复制修改下,就能用于数据库的其它表格了。
另外,想请教本文读者一个问题,列宽如何根据自己的想法调整呢?
窗体编辑状态
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAo0AAAHYCAIAAACnZEXDAAAdHElEQVR4nO3deZjcdX3A8f2rWpGKgKjUWqxAOQQ8QJRzQahVROSwKlaBAALBXIQrkJANhxAgJ+FITAgJpyhnIIAQWcJpwRJpaq0cQhUtR2379Hl82kLc/vHbbIfZmdnfbOY785nf7/V63k+ezWSyZPczv/nuZ7Mben4PAETVU/mT3t5eP/rRj370ox/9GOfHnt8DAFG95ZzOTu+1a56QJEkdrNE+vXbNEwMAQIf09fVl53TdfXpgYKDjH0pIklTOhs7pRvt0x/+UkiSVsyb26XdsPXYD22ibsRttc/JG25y80bYnv3Pbk9+57bffue23N/7LrHEbbzfuTwYb/yfbj39X1g7jN9lhwiY7TNhkxwmb7Djh3TtOfPeOE9/9kYmbfmTiph+ZtOlOkzbdadJmO03abKdTNtv5lM12PmXznU/ZfJfJm+8y+T27TH7PR7NO3eKjp27xsazT3vvxwd738dPf94nB3r/rGVlb7pZ15pa7nfmnn8ya8qe7T/nAYGf92afW9+mzP5i1x9kf3GPqn2ftOXWrPadutee0rfaattVe0z6017QP7XXOh/Y+5y+y9pn+F/tM//A+0z+87/QP79v34X37tt63b+vevq17Z2zTO2Ob/Qbbdr9zt91/sL/8zHlZ2x1w3nYHnJ+1/YHnb3/gBdsfeMEOfzXUd3b87Pr++sKPZH3uwp0+d9Fgn79o58/P3PnzM3c+aObOB83c5aCLdzno4l2+cPFHsw6+5KMHX/Kxgy/52Bcv+dgXL/141iGXfvyQWZ84ZNYnvpQ1e9cvzd710Nm7Hjp7t0Nn73bYnKxPHj7nk4fP/eThc3c/fO7uR8zd/Yh5ux8x71Nfzpr/qS/P//TfZF22x1fW99XL9vzqgsG+tmCvr12+19cu3+vIy/c+8vK9j7xi7yOv2PvrV+zz9Sv2+fqV+/ztlfsOdtW+37iqN+ubV/V+c+F+31y431EL9ztq4f5HLdr/qEX7H71o/6MXfebo737mmMEOOGbxAWMWHzBm8YFjFh947OIDj11y4LFL/uq4rKs/e9zVnz0+a+lff2uoaz53wmCfP3HZYCctO+ikZQedtPygk5YfNHb5F8Yu/8LYa79w8rUHD3bdwd++7otZ464/JGv89YeMv+FLWRNu+NKEGw6dcOOhE288dOKNh0288bCJNx026abDJt10+KSbDj/le1lHTP7eEZNvPmLyzV+efPOXT836/t+cNthXTvvBV04f7Ktn3DLYmbd87cxbs46ccuuRU247csptR55129cHu/1vz17f1Du+kTXtjm9Mu/ObWefcedQ5K446Z8VR01ccNX3F0dNXHD39rqP77jq6765j+u46Zsbdx8y4e8yMu8ece/eYc1eOOXflseeuPPa8lceed89x591z3PlZ9x5//r3HXzDYt75zX9YJF953woU/zDrxoh+eeNH9J150/4kz7z9p5v0nzXzgpJkPjL04a9XYS1adnHXpqm9f+qPBZv1o3KwHx816cNzsB8fNfnD87P7xs/vHz+mfMKd/wpyHJsx9aMLchybOfWjivIcmzls9cd7qSfNWT5q/etL8h0+Z//Apl2U9MvmyRyYveGTygkdOXfDoqZcPdtrlj512xWCnX/nY6Vc+fvqVj59xVdYTZ1z1xJkLs3585qIfTxns78767voWP3l21pInpy55cuqSp6YueWrq1U9Nu/qpaVf/ZNrSn0xb+pNzlv7knKV/f841fz89a9nT05c93bfs6b7lT/ctf3rG8jUzlq+Zce2aGdeuOffan5573WDnXffMedc/c971z5x//TPn3/APWRfc+A8X3Lg26zs3Zf3jhd8b6mcX3TzYzO//02A/+KeLf/DzwW75+SW3/PySW/75klv/+dLBfnHpbb+YlXX7s7Nuf3b27c/OvuPZ2Xc8Nyfrzufm3Pn83Dufn7vi+bkrnp+34vl5K16Yd9cL8+56Yf5dL8y/+5dZl6385WUrX7xs5YsLVr644J4XF9zz0oJ7Xrr83qx/ufzef7nivsGu/OGvBrv/V1fd/+ushQ/8euEDLy984OWFq15etOrlRat+s2jVbxb96DffzXrwt4uz+n+7uP9fl2Q99K9LHnrl6odeuXr1K1evfmXp6leXrn516cOvLn341Wsefu2aR1675pHXlj3y2rJHX1v26OvLHn19+aOvL3/s9eWP/dvyx/7t2sezfnfd47+77omsf7/+x4Pd8Hf/Ebyqc3rkfdo57Zx2TjunndPOaed0p87pJvbp/tyc085p57Rz2jntnI58Tjf1JV29vb3N3n90/5UN3aerDuD+/v5/vG7LrJ8ue/+Ti9/72FVb/Gj+5jXP6ewPkZ3T2ctV53R2Y+U5nd0y/JzObs/O6ezlBud0dod653T2q0PndPbTBud0vXeuc9o57Zx2Tjunu+6cburviZu9/+j+Ky3Yp4ef0394/b4/vH7fH165dd3L16x7adYdF757dOf00FHd1Dm92U6nZD+tOqcbf8xSdU5nnnrmpeH3/MDuU4Ze/vVv/z174YOfPnvwhT2mOqed085p57RzulTndE99ic7pDdqnn176vj+8cuu6l5eue2n2uuemrPvZcddN23j4OT14SFd83rviqK77ee+a53TjA3hgYKDynB7+ee/Kczp7+f27njEwMHD7fWuyn26525nZC5X7dHbL0D7tnHZOO6ed085p53Sz53TlfYbf0rJ9uspjV26x7qVZ6549682fHf/mmkPefGrPhaf+8SjO6eHH7dA5PaTynB7x76cbn+XDl+l6ap7TwzmnndPOaee0c7o853TNu+XZpysP5qpju2X79BM7vL1/u3fcs+1Gt269cX9//72zNl33s+PfXHPIG0/u9cbj27+xesu5495edU5nJ9nwryPLbm9qnx46Fzdd/zfTVarO6Zz7dM2vI2twTtunndPOaee0c9o5PYpzumodz/l57+b26fu3fcd/3XXbqwvmLt3qXf39/d8/711vPrnnm49t/+bDW77Rv8kb/ZvMGvu2ynN6YGDgx0+/UPNM/e//+d/Bo3roi8i2Gz8wMPCf//X7ET/v3ZJ9Ovt673r3Gfq899At/n7aOe2cdk47p53TG3hO1/wEeCv36R9svfGrl895/lvHzPnApv39/UunvPOqye+YP+Hts09+26yxb5s19o+qzunK78vKjrShz3v/9//8b9XXez/7y1eyc7rmwVl1Tte8T1P7dOU5XblPV53TPu/tnHZOO6ed087pVp3TyffpJVtt8twJxzz96U+c+/73NPv9082e00PfP13znG7bPl15Tg99/3R2i++fdk47p53TzmnndP5zuh1/Pz37A5tdsOXmU9+3xeQt3tvf33/WbS9mnX7z8xOv/UV2Qo/4fVk1z+nK78vKc07XPFxr/jsn2S/V+3dOsl9t/O+cDJ3T9Q5157Rz2jntnHZOd+85Xe8rt1t7Tnfm671Pv/n55asHZq8cOPX6ga/OfLIl5/SvfvO7/Of00D5ddU5Xvp7Kozp7Ic8+PTAwUHVOZ0e1fdo57Zx2TjunS35Oj+77svJs7S37/umh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)
运行效果
![](data:image/png;base64,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)
//连接字符串 namespace LocoManagement { class global_variables { //sqlite3 odbc 连接字符串 public static string connStr = "Dsn=SQLite3 Datasource;database=D:\\database\\jiche.db;StepAPI=0;SyncPragma=;NoTXN=0;Timeout=;ShortNames=0;LongNames=0;NoCreat=0;NoWCHAR=0;FKSupport=0;JournalMode=WAL;OEMCP=0;LoadExt=;BigInt=0;JDConv=0;"; } } //数据库表格窗口 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.Data.Odbc; namespace LocoManagement { public partial class FormStationEditor : Form { public FormStationEditor() { InitializeComponent(); } public string connStr = global_variables.connStr; public TextBox[] textbox_array; public Label[] label_array; private void FormStationEditor_Load(object sender, EventArgs e) { string strSqlQuery = string.Format("select num as 序号,ID as 编号,IP as IP地址,UDP_port as UDP端口号,name as 名称,description as 描述,x as x,y as y,z as z from station"); OdbcConnection conn = new OdbcConnection(connStr); OdbcDataAdapter da = new OdbcDataAdapter(strSqlQuery, conn); //引用数据库连接dbconn并依据SQL语句"select * from kaizhi"创建OleDbDataAdapter对象da DataSet ds = new DataSet(); //创建DataSet对象 da.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; Label[] label_array_temp = { label1, label2, label3, label4, label5, label6, label7, label8, label9 }; TextBox[] textbox_array_temp = { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9 }; textbox_array = textbox_array_temp; label_array = label_array_temp; int i; for (i = 0; i < label_array.Length; i++) { if (i < ds.Tables[0].Columns.Count) label_array[i].Text = ds.Tables[0].Columns[i].ToString(); else { label_array[i].Visible = false; textbox_array[i].Visible = false; } } } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { int i; int index = dataGridView1.CurrentRow.Index; for (i = 0; i < dataGridView1.ColumnCount; i++) { textbox_array[i].Text = dataGridView1.Rows[index].Cells[i].Value.ToString(); } } private void button_add_Click(object sender, EventArgs e) { string sql = "insert into station(ID,IP,UDP_port,name,description,x,y,z) values (?,?,?,?,?,?,?,?)"; if (textbox_array[1].Text.Trim() == "" || textbox_array[2].Text.Trim() == "" || textbox_array[3].Text.Trim() == "" || textbox_array[4].Text.Trim() == "" || textbox_array[5].Text.Trim() == "" || textbox_array[6].Text.Trim() == "" || textbox_array[7].Text.Trim() == "" || textbox_array[8].Text.Trim() == "") { MessageBox.Show("文本框的输入不能为空!"); return; } OdbcParameter[] param ={ new OdbcParameter("@ID",textbox_array[1].Text), new OdbcParameter("@IP",textbox_array[2].Text), new OdbcParameter("@UDP_port",textbox_array[3].Text), new OdbcParameter("@name",textbox_array[4].Text), new OdbcParameter("@description",textbox_array[5].Text), new OdbcParameter("@x",textbox_array[6].Text), new OdbcParameter("@y",textbox_array[7].Text), new OdbcParameter("@z",textbox_array[8].Text) }; OdbcConnection conn = new OdbcConnection(connStr); OdbcCommand cmd = new OdbcCommand(sql, conn); conn.Open(); cmd.Parameters.AddRange(param); int n = 0; try { n = cmd.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message);//显示异常信息 } if (n == 0) { MessageBox.Show("添加失败!"); return; } else if (n > 0) { MessageBox.Show("添加成功!"); } conn.Close(); datagridview_refresh(); } private void button_delete_Click(object sender, EventArgs e) { //使用sql删除语句 string sql = "delete from station where 1=1 "; //如果datagridview的当前行被选中 if (dataGridView1.CurrentRow.Selected) { //将sql语句 delete from Record where 1=1 + and Id = + 当前选中行的第0个单元格的号码(即Id号) sql = sql + "and num=" + Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString()); } else return; OdbcConnection conn = new OdbcConnection(connStr); OdbcCommand cmd = new OdbcCommand(sql, conn); int n = 0; conn.Open(); try { n = cmd.ExecuteNonQuery(); } catch(Exception ex) { MessageBox.Show(ex.Message);//显示异常信息 } if (n == 0) { MessageBox.Show("不存在的ID!"); return; } else if (n > 0) { MessageBox.Show("删除成功!"); } conn.Close(); datagridview_refresh(); } private void button_edit_Click(object sender, EventArgs e) { //在对数据进行修改之前 对文本框的内容做一下检查, 如果为空 则提示重新输入 if (textbox_array[1].Text.Trim() == "" || textbox_array[2].Text.Trim() == "" || textbox_array[3].Text.Trim() == "" || textbox_array[4].Text.Trim() == "" || textbox_array[5].Text.Trim() == "" || textbox_array[6].Text.Trim() == "" || textbox_array[7].Text.Trim() == "" || textbox_array[8].Text.Trim() == "") { MessageBox.Show("文本框的输入不能为空!"); return; } //使用SQL update 更新语句 //获取文本框中输入的内容, 通过Id进行更新(Id为当前鼠标点击行的Id) string sqlUpdate = "update station set ID=?,IP=?,UDP_port=?,name=?,description=?,x=?,y=?,z=?" + "where num=" + dataGridView1.CurrentRow.Cells[0].Value.ToString(); OdbcConnection conn = new OdbcConnection(connStr); OdbcCommand cmd = new OdbcCommand(sqlUpdate, conn); OdbcParameter[] param ={ new OdbcParameter("@ID",textbox_array[1].Text), new OdbcParameter("@IP",textbox_array[2].Text), new OdbcParameter("@UDP_port",textbox_array[3].Text), new OdbcParameter("@name",textbox_array[4].Text), new OdbcParameter("@description",textbox_array[5].Text), new OdbcParameter("@x",textbox_array[6].Text), new OdbcParameter("@y",textbox_array[7].Text), new OdbcParameter("@z",textbox_array[8].Text) }; conn.Open(); cmd.Parameters.AddRange(param); int n = 0; try { n = cmd.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message);//显示异常信息 } if (n == 0) { //提示更新失败 MessageBox.Show("更新失败!"); return;// 并且返回 } else if (n > 0) { //否则更新成功 MessageBox.Show("更新成功!"); } conn.Close();//执行完数据更新操作后 需要关闭数据库 节省资源 datagridview_refresh();//更新完以后 调用刷新方法,将更新后的数据 显示在datagridview上面 } private void datagridview_refresh() { string strSqlQuery = string.Format("select num as 序号,ID as 编号,IP as IP地址,UDP_port as UDP端口号,name as 名称,description as 描述,x as x,y as y,z as z from station"); OdbcConnection conn = new OdbcConnection(connStr); OdbcDataAdapter da = new OdbcDataAdapter(strSqlQuery, conn); DataSet ds = new DataSet(); da.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; dataGridView1.Refresh(); } private void button_query_Click(object sender, EventArgs e) { datagridview_refresh(); } } }