如何把数组的值插入到数据库 c#

2024-11-11 10:46:16
推荐回答(3个)
回答1:

因为楼主没有说数据库的名字,还有表名所有,我写成了方法的入口参数了。我觉得楼主应该会取数组的值的哦。

环境: .NET FRAMEWORK 2.0

需要引入的命名空间 System.Data.SqlClient

///


/// 插入数据。
///

/// 数据库名
/// 登录数据库的用户名
/// 登录密码
/// 数据表名
/// 表字段 name
/// 表字段 sex
///
public int InsertData
( string database, string userId, string password, string srcTable, string name, string sex )
{
int affected = -1; // 用于记录受影响的行数。
// 构造连接字符串
string conStr = String.Format( @"server=localhost;database={0};uid={1};password={2};", database, userId, password );
// 构造 T-SQL 语句
string sql = String.Format( @"Insert INTO [{0}]( [name], [sex] ) VALUES( @name, @sex )", srcTable );

using( SqlConnection con = new SqlConnection( conStr ) )
{
SqlCommand cmd = new SqlCommand( sql );
// 设置参数的值
cmd.Parameters.AddWithValue( "@name", name );
cmd.Parameters.AddWithValue( "@sex", sex );

try
{
// 执行操作,并记录受影响的行数。
affected = cmd.ExecuteNonQuery();
}
catch( SqlException sqlEx )
{
throw new Exception( "数据库异常", sqlEx );
}
catch
{
throw new Exception( "未知错误" );
}
finally
{
cmd.Cancel();
cmd.Dispose();
}
}

return affected;
}

回答2:

1.设置一个数据库的连接串,
string connectStr = "User Id=scott;Password=tiger;Data Source=";
OracleConnection conn = new OracleConnection(connectStr);
OracleCommand command = new OracleCommand();
command.Connection = conn;
conn.Open();
2.通过循环写入大量的数据
for (int i = 0; i < recc; i++)
{
string sql = "insert into dept values(" + i.ToString() + "," + i.ToString() + "," + i.ToString() + ")";
command.CommandText = sql;
command.ExecuteNonQuery();
}
//设置一个数据库的连接串
string connectStr = "User Id=scott;Password=tiger;Data Source=";
OracleConnection conn = new OracleConnection(connectStr);
OracleCommand command = new OracleCommand();
command.Connection = conn;
//到此为止,还都是我们熟悉的代码,下面就要开始喽
//这个参数需要指定每次批插入的记录数
command.ArrayBindCount = recc;
//在这个命令行中,用到了参数,参数我们很熟悉,但是这个参数在传值的时候
//用到的是数组,而不是单个的值,这就是它独特的地方
command.CommandText = "insert into dept values(:deptno, :deptname, :loc)";
conn.Open();
//下面定义几个数组,分别表示三个字段,数组的长度由参数直接给出
int[] deptNo = new int[recc];
string[] dname = new string[recc];
string[] loc = new string[recc];
// 为了传递参数,不可避免的要使用参数,下面会连续定义三个
// 从名称可以直接看出每个参数的含义,不在每个解释了
OracleParameter deptNoParam = new OracleParameter("deptno", OracleDbType.Int32);
deptNoParam.Direction = ParameterDirection.Input;
deptNoParam.Value = deptNo;
command.Parameters.Add(deptNoParam);
OracleParameter deptNameParam = new OracleParameter("deptname", OracleDbType.Varchar2);
deptNameParam.Direction = ParameterDirection.Input;
deptNameParam.Value = dname; command.Parameters.Add(deptNameParam);
OracleParameter deptLocParam = new OracleParameter("loc", OracleDbType.Varchar2);
deptLocParam.Direction = ParameterDirection.Input;
deptLocParam.Value = loc;
command.Parameters.Add(deptLocParam);
//在下面的循环中,先把数组定义好,而不是像上面那样直接生成SQL
for (int i = 0; i < recc; i++)
{
deptNo[i] = i;
dname[i] = i.ToString();
loc[i] = i.ToString();
}
//这个调用将把参数数组传进SQL,同时写入数据库
command.ExecuteNonQuery();

回答3:

string[] array = new string[]{"zhangsan","男"}
string sql = "Insert into 表名(name,sex) values("+array[0]+","+array[1]+")";

是这意思吧