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;
}
}
}
