向数据库中添加记录的方式有几种?例如插入语句:
sql = "insert Into 新闻 (news_title,news_classid) Values(news_title,news_classid) " 然后执行就好了,conn.execute(sql) 。可不可以写成一个类,用Datatable或Dataset和 OleDbAdapter 更新进数据库 。该怎样构思,设计,编码?
sql = "insert Into 新闻 (news_title,news_classid) Values(news_title,news_classid) " 然后执行就好了,conn.execute(sql) 。可不可以写成一个类,用Datatable或Dataset和 OleDbAdapter 更新进数据库 。该怎样构思,设计,编码?
具体实现可以google一下批量插入!
qlconnection con=new sqlconnection(conStr);
con.Open();//打开数据库连接
string sql1="select * from 表名"; 这个是查看
string sql2="insert into 表名(列名,列名)values(插入的值,插入的值)";这个是增加
string sql3="delete from 表名 where 列名=值";删除sqlcommand com=new sqlcommand(要执行的sql语句,con);//这个是用来增加,删除的
com.ExecuteNonQuery();//执行SqlDataAdapter da = new SqlDataAdapter(sql1,con);//查询
dataset ds=new dataset();
da.fill(ds);
这样容易被注入呀,安全性太差了。
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(Src))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, CommandType.Text, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
}
}
} /// <summary>
/// Prepare a command for execution
/// </summary>
/// <param name="cmd">SqlCommand object</param>
/// <param name="conn">SqlConnection object</param>
/// <param name="trans">SqlTransaction object</param>
/// <param name="cmdType">Cmd type e.g. stored procedure or text</param>
/// <param name="cmdText">Command text, e.g. Select * from Products</param>
/// <param name="cmdParms">SqlParameters to use in the command</param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{ if (conn.State != ConnectionState.Open)
conn.Open(); cmd.Connection = conn;
cmd.CommandText = cmdText; if (trans != null)
cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}下载个动软代码生成器,生成的这样的代码可以看到很多的。通过参数化命令执行sql文。
SqlConnection con=new SqlConnection("连接数据库字符串");
con.Open();//打开数据库连接
sqlcommand com=new sqlcommand(sql语句,con);//增、删、改sql语句
com.ExecuteNonQuery();//执行操作
con.Close();
SqlConnection con=new SqlConnection("连接数据库字符串");
con.Open();//打开数据库连接
SqlDataAdapter da = new SqlDataAdapter(sql语句,con);//查询sql语句
dataset ds=new dataset();
da.fill(ds);//执行操作
con.Close();
System.Data.SqlClient.SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter();//定义一个SqlDataAdapter 的实例
SqlCommand scmd = new SqlCommand();//定义一个SqlCommand的实例,以便绑定
scmd.CommandType = CommandType.Text;
scmd.Connection = new SqlConnection(ConnectionString);
scmd.Parameters.Add("@acc_title_id", SqlDbType.Int, 4, "acc_title_id");//重要的地方,将dt的列写到参数中去
scmd.Parameters.Add("@acc_std_title_id", SqlDbType.Int, 4, "acc_std_title_id");
scmd.Parameters.Add("@back_id", SqlDbType.Int, 4, "back_id");
scmd.CommandText = string.Format("update t_std_acc_title_ent_acc_title set acc_title_id=@acc_title_id where acc_std_title_id = @acc_std_title_id and acc_id = {0} and acc_title_id=@back_id", eleid);
sda.UpdateCommand = scmd;//更新语句
scmd = new SqlCommand();
scmd.CommandType = CommandType.Text;
scmd.Connection = new SqlConnection(ConnectionString);
scmd.Parameters.Add("@acc_title_id", SqlDbType.Int, 4, "acc_title_id");
scmd.Parameters.Add("@acc_std_title_id", SqlDbType.Int, 4, "acc_std_title_id");
scmd.CommandText = string.Format("insert into t_std_acc_title_ent_acc_title values(@acc_std_title_id,{0},@acc_title_id)",eleid);
sda.InsertCommand = scmd;//插入语句
sda.Update(dt.Select(null, null, DataViewRowState.ModifiedCurrent));//先执行更新
sda.Update(dt.Select(null, null, DataViewRowState.Added));//再执行插入使用SqlDataAdapter的Update方法更新DataSet到数据库中