1.WindowsForm测试界面:
2.直接上代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data.Odbc;
using DAO = Microsoft.Office.Interop.Access.Dao;
using System.Diagnostics;
using System.Threading;
namespace UseDatabase
{
public partial class Form1 : Form
{
//定义数据常量
static string StrConnec = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\VS2017\PackHelper\PackHelper\bin\Debug\AutoPackDatabase.accdb";
OleDbConnection dbconn = new OleDbConnection(StrConnec);
OleDbDataAdapter oledbadapter = null;
DataTable DT = null;
public Form1()
{
InitializeComponent();
}
private void button6_Click(object sender, EventArgs e)
{
//判断一个键值是否存在,在插入以前就必须保证这个键值是唯一值
DataSet ds = new DataSet();
string sql = "select*from UserInfo where User='"+textBox1.Text+"'";
dbconn.Open();//建立连接
oledbadapter = new OleDbDataAdapter(sql, dbconn);
oledbadapter.Fill(ds);
if( ds.Tables[0].Rows.Count<=0)
{
MessageBox.Show("记录不存在");
}
dbconn.Close();
}
private void button4_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 查询整表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click_1(object sender, EventArgs e)
{
dbconn.Open();//建立连接
string sql = "select * from UserInfo ";
oledbadapter = new OleDbDataAdapter(sql, dbconn);
DT = new DataTable();
oledbadapter.Fill(DT);
dataGridView1.DataSource = DT;
dbconn.Close();
}
/// <summary>
/// 获取列值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
dbconn.Open();//建立连接
DT = new DataTable();
string Update = "select*from UserInfo where ID = 3";
//string Update = "select name1,school from 表1 where ID = 3";
//OleDbCommand command = new OleDbCommand(Update, dbconn);
oledbadapter = new OleDbDataAdapter(Update,dbconn);
oledbadapter.Fill(DT);
dataGridView1.DataSource = DT;
richTextBox1.Text+= DT.Rows[0]["User"].ToString();
richTextBox1.Text += DT.Rows[0]["PassWord"].ToString();
dbconn.Close();
}
/// <summary>
/// 更改数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
dbconn.Open();//建立连接
string Update = "update UserInfo set name1 ='" + textBox1.Text + "'"+" where name1 = '"+textBox2.Text+"'";
OleDbCommand command = new OleDbCommand(Update, dbconn);
command.ExecuteNonQuery();
dbconn.Close();
}
/// <summary>
/// 插入一条新纪录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
///Sql语句中,一定不能有保留字,主要是在Access的字段名字或者是值
///如果有保留字,可加[]解决,但是最好的方法是不要出现
string sql = "INSERT INTO UserInfo([UserName],[PassWord],[AuthorityLevel]) values('" + "学生4" + "','" + "21" + "','" + "175" + "')";
dbconn.Open();//建立连接
OleDbCommand command = new OleDbCommand(sql,dbconn);
command.ExecuteNonQuery();
dbconn.Close();
}
/// <summary>
/// 删除一条记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
dbconn.Open();//建立连接
string Delete = "Delete From UserInfo Where UserName = 'IW'" ;
OleDbCommand command = new OleDbCommand(Delete, dbconn);
command.ExecuteNonQuery();
dbconn.Close();
}
//使用DataReader读取数据很方便快速简单
private void button7_Click(object sender, EventArgs e)
{
dbconn.Open();//建立连接
//OleDbCommandBuilder
string sql = "select * from 表1 where name1 = 'SONGSONG'";
OleDbCommand comd = new OleDbCommand(sql, dbconn);
OleDbDataReader dr;
dr = comd.ExecuteReader();
while (dr.Read())
{
richTextBox1.Text += dr[0].ToString();
richTextBox1.Text += dr[1].ToString();
richTextBox1.Text += dr[2].ToString();
richTextBox1.Text += dr[3].ToString();
}
dbconn.Close();
}
/// <summary>
/// 在datagridview里更改后,点击保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button9_Click(object sender, EventArgs e)
{
//获取所有的有改变的row,组成一个datatable,再判断进行的操作是什么,然后再数据库进行增删改查的操作
DataTable ChangeDT = DT.GetChanges();
if (ChangeDT == null)
return;
foreach(DataRow DR in ChangeDT.Rows)
{
//判断当前行是否是新增行
if(DR.RowState==System.Data.DataRowState.Added)
{
string sql = "insert into UserInfo ([User],[PassWord],[AuthorityLevel])values('"+ DR["User"].ToString() + "','" + DR["PassWord"].ToString() + "','" + DR["AuthorityLevel"].ToString() + "')";
dbconn.Open();
OleDbCommand command = new OleDbCommand(sql, dbconn);
command.ExecuteNonQuery();
dbconn.Close();
}
//判断当前行是否是删除行
else if (DR.RowState == System.Data.DataRowState.Deleted)
{
string sql = "Delete From UserInfo Where User = '"+DR["User",DataRowVersion.Original].ToString()+"'"+"And PassWord='"+ DR["PassWord", DataRowVersion.Original].ToString()+"'";
dbconn.Open();
OleDbCommand command = new OleDbCommand(sql, dbconn);
command.ExecuteNonQuery();
dbconn.Close();
}
//判断当前行是否是修正行
else if(DR.RowState == System.Data.DataRowState.Modified)
{
string sql = "update UserInfo set [User] ='" + DR["User"].ToString() + "',[PassWord]='"+ DR["PassWord"].ToString() + "',[AuthorityLevel]='" +DR["AuthorityLevel"].ToString()+ "'"+
" Where User = '"+DR["User",DataRowVersion.Original].ToString()+"'"+"And PassWord = '"+ DR["PassWord", DataRowVersion.Original].ToString()+"'";
dbconn.Open();
OleDbCommand command = new OleDbCommand(sql, dbconn);
command.ExecuteNonQuery();
dbconn.Close();
}
}
}
private void button10_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
string sql = "select*from UserInfo ";
dbconn.Open();//建立连接
oledbadapter = new OleDbDataAdapter(sql, dbconn);
oledbadapter.Fill(ds);
string name = string.Empty;
for( int i=0;i< ds.Tables[0].Rows.Count;i++)
{
name += ds.Tables[0].Rows[i]["User"].ToString();
}
MessageBox.Show(name);
dbconn.Close();
}
Stopwatch Watchdog = new Stopwatch();
private void button11_Click(object sender, EventArgs e)
{
dbconn.Open();//建立连接
DataTable dt0 = GetTableSchema();
Watchdog.Reset();
Watchdog.Start();
OleDbCommand command = new OleDbCommand("", dbconn);
command.CommandType = CommandType.Text;
for (int i=0;i<=10000;i++)
{
// command.CommandText执行Sql语句
command.CommandText= "insert into UserInfo ([User],[PassWord],[AuthorityLevel])values('" + "Userif"+i.ToString() + "','" + "PassWordif"+ i.ToString() + "','" + "AuthorityLevelif" + i.ToString() + "')";
command.ExecuteNonQuery();
}
/*
* Access数据库不能用sqlBULK,批量插入,只能一条一条循环插入
*
* //DataRow dr = dt0.NewRow();
//dr["User"] = "User"+i.ToString();
//dr["PassWord"] = "PassWord" + i.ToString();
//dr["AuthorityLevel"] = "AuthorityLevel" + i.ToString();
//dt0.Rows.Add(dr);
*
* */
Watchdog.Stop();
richTextBox1.AppendText(Watchdog.ElapsedMilliseconds.ToString());
dbconn.Close();
}
static DataTable GetTableSchema()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("User",typeof(string)),
new DataColumn("PassWord",typeof(string)),
new DataColumn("AuthorityLevel",typeof(string))});
return dt;
}
}
}