高分急求! C# ADO 数据库增、删、改、查基本操作
各位前辈,小弟正在学习C#,现在老师让我们做一个数据库程序,强烈要求用ADO访问方式。我学得一头雾水啊,我以前C++是用的ODBC,现在C#要用ADO,我真的不会。请哪位...
各位前辈,小弟正在学习 C#,现在老师让我们做一个数据库程序,强烈要求用 ADO 访问方式。
我学得一头雾水啊,我以前 C++ 是用的 ODBC,现在 C# 要用 ADO,我真的不会。
请哪位前辈指导一下,从导入命名空间,到实现增、删、改、查四个基本操作,我只要这些代码演示就满足了,谢谢!其他的我自己来扩展。
附上我的数据库结构说明:
Access 2003 库(“帐簿数据库.mdb”);
里面其中有一张表([日常帐目]);
该表包含字段([自动编号],[入帐日期],[费用类型],[费用摘要],[发生金额],[备注])
如果试验成功,我另加 200分 感谢!
另外,您也可以将代码发到我的邮箱:78413718@qq.com 或者 yvhpfiipfi@126.com
或者联系我(留下您的 QQ 也行)进行指导,万分感谢! 展开
我学得一头雾水啊,我以前 C++ 是用的 ODBC,现在 C# 要用 ADO,我真的不会。
请哪位前辈指导一下,从导入命名空间,到实现增、删、改、查四个基本操作,我只要这些代码演示就满足了,谢谢!其他的我自己来扩展。
附上我的数据库结构说明:
Access 2003 库(“帐簿数据库.mdb”);
里面其中有一张表([日常帐目]);
该表包含字段([自动编号],[入帐日期],[费用类型],[费用摘要],[发生金额],[备注])
如果试验成功,我另加 200分 感谢!
另外,您也可以将代码发到我的邮箱:78413718@qq.com 或者 yvhpfiipfi@126.com
或者联系我(留下您的 QQ 也行)进行指导,万分感谢! 展开
9个回答
展开全部
string cmdText="Update 日常帐目 set 备注=@txt where 自动编号=1";
OleDbParameter odp=new OleDbParameter("@txt", OleDbType.VarChar, 6000);(最后这个6000是与数据库对应的字段的长度)
odp.Value = "要改成的备注";
string ConnString="";(链接字符串,用数据适配器自动生成,这个东西没有谁能记住吧)
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = conn.CreateCommand())
{
PrepareCommand(cmd, CommandType.Text, cmdText);
conn.Open();
reValue = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
if(reValue>0)
提示修改成功;
else
提示修改失败;
上面写的是修改字段,包括传参的方法。insert语句和delete语句可用同样的方法来实现。注意的是reValue这个变量时数据库返回的int型变量大于0表示受影响的行数大于0,也就是成功了。
下面是select语句的方法。
string cmdText="select * from 日常帐目 where 自动编号=1";
OleDbConnection conn = new OleDbConnection(ConnString);
try
{
OleDbDataReader reReader;
using (OleDbCommand cmd = conn.CreateCommand())
{
PrepareCommand(cmd, CommandType, cmdText);
conn.Open();
reReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
}
return reReader;
}
catch
{
conn.Close();
throw;
}
上面的的语句我是从一个方法中复制出来,然后修改了一下,需要返回DataReader的,由于DateReader需要关闭,而关闭后又不能读取,说以用了reReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);的方式,如果不返回DateReader后面可以不用参数,那个参数的意思是在关闭DataReader的时候关闭数据库链接。所以在别的地方调用这个方法的时候必须用Using()就是我上面用的那种方式。
只要你多考虑考虑应该能看懂的。
OleDbParameter odp=new OleDbParameter("@txt", OleDbType.VarChar, 6000);(最后这个6000是与数据库对应的字段的长度)
odp.Value = "要改成的备注";
string ConnString="";(链接字符串,用数据适配器自动生成,这个东西没有谁能记住吧)
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = conn.CreateCommand())
{
PrepareCommand(cmd, CommandType.Text, cmdText);
conn.Open();
reValue = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
if(reValue>0)
提示修改成功;
else
提示修改失败;
上面写的是修改字段,包括传参的方法。insert语句和delete语句可用同样的方法来实现。注意的是reValue这个变量时数据库返回的int型变量大于0表示受影响的行数大于0,也就是成功了。
下面是select语句的方法。
string cmdText="select * from 日常帐目 where 自动编号=1";
OleDbConnection conn = new OleDbConnection(ConnString);
try
{
OleDbDataReader reReader;
using (OleDbCommand cmd = conn.CreateCommand())
{
PrepareCommand(cmd, CommandType, cmdText);
conn.Open();
reReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
}
return reReader;
}
catch
{
conn.Close();
throw;
}
上面的的语句我是从一个方法中复制出来,然后修改了一下,需要返回DataReader的,由于DateReader需要关闭,而关闭后又不能读取,说以用了reReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);的方式,如果不返回DateReader后面可以不用参数,那个参数的意思是在关闭DataReader的时候关闭数据库链接。所以在别的地方调用这个方法的时候必须用Using()就是我上面用的那种方式。
只要你多考虑考虑应该能看懂的。
今至电子科技有限公司
2024-08-23 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
展开全部
一、新建一个类DataBase
using System.Data.OleDb;//应用oldb数据库操作类
public class DataBase
{
private OleDbConnection Con;
public DataBase()
{
Con = new OleDbConnection();
Con.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("帐簿数据库.mdb");
}
//accounts日常帐目
///添加操作
public bool Insert(string id,DateTime date,string costMode,string costZhaiYao,int price , string remarks)
{
string sqlStr="Insert into accounts(date,costMode,costZhaiYao,price,remarks) values("+id+",'"+date+"','"+constMode+"','"+constZhaiYao+"',"+price+",'"+remarks);
OleDbCommand cmd=new OleDbCommand(sqlStr,Con);
try
{
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
return true;
}
catch
{
Con.Close();
return false;
}
}
///更新操作
public bool Update(string id,DateTime date,string costMode,string costZhaiYao,int price , string remarks)
{
string sqlStr="Update accounts Set date='"+date+ "',costMode='"+costMode+"',costZhaiYao='"+costZhaiYao+"',price="+price+",remarks='"+remarks+"' where id="+id;
OleDbCommand cmd=new OleDbCommand(sqlStr,Con);
try
{
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
return true;
}
catch
{
Con.Close();
return false;
}
}
///删除操作
public bool Update(string id)
{
string sqlStr="delete from accounts where id="+id;
OleDbCommand cmd=new OleDbCommand(sqlStr,Con);
try
{
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
return true;
}
catch
{
Con.Close();
return false;
}
}
}
using System.Data.OleDb;//应用oldb数据库操作类
public class DataBase
{
private OleDbConnection Con;
public DataBase()
{
Con = new OleDbConnection();
Con.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("帐簿数据库.mdb");
}
//accounts日常帐目
///添加操作
public bool Insert(string id,DateTime date,string costMode,string costZhaiYao,int price , string remarks)
{
string sqlStr="Insert into accounts(date,costMode,costZhaiYao,price,remarks) values("+id+",'"+date+"','"+constMode+"','"+constZhaiYao+"',"+price+",'"+remarks);
OleDbCommand cmd=new OleDbCommand(sqlStr,Con);
try
{
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
return true;
}
catch
{
Con.Close();
return false;
}
}
///更新操作
public bool Update(string id,DateTime date,string costMode,string costZhaiYao,int price , string remarks)
{
string sqlStr="Update accounts Set date='"+date+ "',costMode='"+costMode+"',costZhaiYao='"+costZhaiYao+"',price="+price+",remarks='"+remarks+"' where id="+id;
OleDbCommand cmd=new OleDbCommand(sqlStr,Con);
try
{
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
return true;
}
catch
{
Con.Close();
return false;
}
}
///删除操作
public bool Update(string id)
{
string sqlStr="delete from accounts where id="+id;
OleDbCommand cmd=new OleDbCommand(sqlStr,Con);
try
{
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
return true;
}
catch
{
Con.Close();
return false;
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你简单的写了一个,里面没有异常捕获处理等环节。我相信SQL语句你还是懂的,我就象征性的写了下
using System.Data;
using System.Data.OleDb;
public class test
{
public OleDbConnection GetConn()
{
return new OleDbConnection("数据库连接字符串");
}
public void Close(OleDbConnection conn)
{
conn.Close();
conn.Dispose();
}
public void 增删改()
{
OleDbConnection conn = GetConn();
conn.Open();
string sqlStr = "INSERT INTO [表名] (字段名) VALUES (与字段名对应的值)";
OleDbCommand cmd = new OleDbCommand(sqlStr, conn);
cmd.ExecuteNonQuery(); //执行插入操作,该方法放回受影响的记录数
sqlStr = "UPDATE [表名] SET 字段名=字段值";
cmd.CommandText = sqlStr;
cmd.ExecuteNonQuery(); //执行更新操作,该方法放回受影响的记录数
cmd.CommandText = "DELETE FROM [表名]";
cmd.ExecuteNonQuery(); //执行删除操作
cmd.Dispose();
Close(conn);
}
public void 查()
{
OleDbConnection conn = GetConn();
conn.Open();
string sqlStr = "SELECT * FROM [表名]";
OleDbCommand cmd = new OleDbCommand(sqlStr, conn);
OleDbDataReader dr = cmd.ExecuteReader(); //执行SQL语句返回一个OleDbDataReader对象
while (dr.Read())
{
Console.WriteLine(dr["字段名1"]); //注意dr返回object类型的。dr里可以是int型的索引或string的字段名
Console.WriteLine(dr["字段名2"]);
}
dr.Close();
dr.Dispose();
cmd.Dispose();
Close(conn);
}
public void 查2()
{
string sqlStr = "SELECT * FROM [表名]";
OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, GetConn());
DataTable dt = new DataTable();
da.Fill(dt); //调用Fill方法时会自动打开 数据库连接,用完后会自动关闭
da.Dispose();
int rowCount = dt.Rows.Count;
for(int i = 0; i < rowCount; i++)
{
Console.WriteLine(dt.Rows[i]["字段名1"]); //这里也是可以 用字段名 或 0到N的索引
Console.WriteLine(dt.Rows[i]["字段名2"]);
}
}
}
using System.Data;
using System.Data.OleDb;
public class test
{
public OleDbConnection GetConn()
{
return new OleDbConnection("数据库连接字符串");
}
public void Close(OleDbConnection conn)
{
conn.Close();
conn.Dispose();
}
public void 增删改()
{
OleDbConnection conn = GetConn();
conn.Open();
string sqlStr = "INSERT INTO [表名] (字段名) VALUES (与字段名对应的值)";
OleDbCommand cmd = new OleDbCommand(sqlStr, conn);
cmd.ExecuteNonQuery(); //执行插入操作,该方法放回受影响的记录数
sqlStr = "UPDATE [表名] SET 字段名=字段值";
cmd.CommandText = sqlStr;
cmd.ExecuteNonQuery(); //执行更新操作,该方法放回受影响的记录数
cmd.CommandText = "DELETE FROM [表名]";
cmd.ExecuteNonQuery(); //执行删除操作
cmd.Dispose();
Close(conn);
}
public void 查()
{
OleDbConnection conn = GetConn();
conn.Open();
string sqlStr = "SELECT * FROM [表名]";
OleDbCommand cmd = new OleDbCommand(sqlStr, conn);
OleDbDataReader dr = cmd.ExecuteReader(); //执行SQL语句返回一个OleDbDataReader对象
while (dr.Read())
{
Console.WriteLine(dr["字段名1"]); //注意dr返回object类型的。dr里可以是int型的索引或string的字段名
Console.WriteLine(dr["字段名2"]);
}
dr.Close();
dr.Dispose();
cmd.Dispose();
Close(conn);
}
public void 查2()
{
string sqlStr = "SELECT * FROM [表名]";
OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, GetConn());
DataTable dt = new DataTable();
da.Fill(dt); //调用Fill方法时会自动打开 数据库连接,用完后会自动关闭
da.Dispose();
int rowCount = dt.Rows.Count;
for(int i = 0; i < rowCount; i++)
{
Console.WriteLine(dt.Rows[i]["字段名1"]); //这里也是可以 用字段名 或 0到N的索引
Console.WriteLine(dt.Rows[i]["字段名2"]);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private OleDbConnection conn=new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=帐簿数据库.mdb");//数据库放在Debug文件夹下,当然你可以用绝对路径
private void DataShow()//查
{
OleDbDataAdapter da=new OleDbDataAdapter("select * from 日常帐目",conn);
DataSet ds=new DataSet();
da.Fill(ds,"data");
dataGrid1.DataSource=ds.Tables["data"];
}
private void insert()//增
{
OleDbCommand cmd=new OleDbCommand(SQL_insert字串,conn);//这个应该自己会写吧
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
DataShow();
}
private void update()//改
{
OleDbCommand cmd=new OleDbCommand(SQL_Update字串,conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
DataShow();
}
private void update()//删
{
OleDbCommand cmd=new OleDbCommand(SQL_Delete字串,conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
DataShow();
}
private void DataShow()//查
{
OleDbDataAdapter da=new OleDbDataAdapter("select * from 日常帐目",conn);
DataSet ds=new DataSet();
da.Fill(ds,"data");
dataGrid1.DataSource=ds.Tables["data"];
}
private void insert()//增
{
OleDbCommand cmd=new OleDbCommand(SQL_insert字串,conn);//这个应该自己会写吧
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
DataShow();
}
private void update()//改
{
OleDbCommand cmd=new OleDbCommand(SQL_Update字串,conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
DataShow();
}
private void update()//删
{
OleDbCommand cmd=new OleDbCommand(SQL_Delete字串,conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
DataShow();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额。。。。。。很简单啊,你建立一个数据集,然后新建数据适配器,建立数据连接,系统会自动根据你数据库的表内容自动生成增删改查的。
或者你可以自己手动去写,OledbCommand各自的SQL语句,然后调用就行了
或者你可以自己手动去写,OledbCommand各自的SQL语句,然后调用就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询