我有两个表,Vehicle_Status
和Trans_Income
。
Vehicle_Status
包含两列,Vehicle_Number
和Status
,Vehicle_Number
包含Trans_Income
列名称的数据。
我想将Vehicle_Number
中的数据加载到数组中,并在insert
语句中使用它。
string[] vehicleActive = new string[100];
SqlCommand cmd = new SqlCommand("Select Vehicle_Number from [dbo].[Vehicle_Status] Where Status = 'Inactive'", con);
cmd.CommandType = CommandType.Text;
con.Open();
int a = 0;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
vehicleActive[a] = dr["Vehicle_Number"].ToString();
a++;
}
con.close();
for (int b = 0; b < a; b++)
{
cmd = new SqlCommand("Insert Into [dbo].[Trans_Income](Month, Particular,'"+vehicleActive[b]+"') VALUES (@Month, @Particular, @vehicleNo )", con);
con.Open();
cmd.Parameters.AddWithValue("@Month", textBox2.Text);
cmd.Parameters.AddWithValue("@Particular", textBox2.Text);
cmd.Parameters.AddWithValue("@vehicleNo", textBox3.Text);
cmd.ExecuteNonQuery();
con.Close();
}
但是我收到了错误
System.Data.SqlClient.SqlException:''BJW6719'附近的语法不正确。'
其中一个列名是BJW6719
- 任何人都可以帮我这个吗?或者还有其他更好的方法吗?提前谢谢。
答案 0 :(得分:1)
我注意到你有额外的&#39;列名称周围的字符,不是必需的。请尝试使用以下代码:
cmd = new SqlCommand("Insert Into [dbo].[Trans_Income](Month, Particular,"+vehicleActive[b]+") VALUES (@Month, @Particular, @vehicleNo )", con);
您确定第三列名称是:BJW6719
。如果是,则上述操作将起作用,否则您需要添加正确的列名。
答案 1 :(得分:0)
如果您使用的是.net framework 4.5,那么您可以将表转换为arrey,这里是代码
try
{
var dt = new DataTable();
var cmd = new SqlCommand();
cmd.CommandText = @"Select Vehicle_Number from [dbo].[Vehicle_Status] Where Status = 'Inactive'";
var da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
catch (Exception ex)
{
}
finally
{
if (cmd.Connection.State == ConnectionState.Open)
{
cmd.Connection.Close();
}
}
var vehicleActive= dt.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
然后你可以像这样循环遍历你的数组
for (int i = 0; i < vehicleActive.Length; i++)
{
cmd = new SqlCommand("Insert Into [dbo].[Trans_Income](Month, Particular,'"+vehicleActive[b]+"') VALUES (@Month, @Particular, @vehicleNo )", con);
con.Open();
cmd.Parameters.AddWithValue("@Month", textBox2.Text);
cmd.Parameters.AddWithValue("@Particular", textBox2.Text);
cmd.Parameters.AddWithValue("@vehicleNo", textBox3.Text);
cmd.ExecuteNonQuery();
con.Close();
}
这是从代码循环数据库的更好方法,列名可能有问题,所以在从代码中查询sql查询之前从sql server检查列名