【发布时间】:2019-07-13 07:27:31
【问题描述】:
我创建了一个从 sqlserver 读取数据然后插入 mysql 表的小项目。 我希望用户将 SQL 和 mysql 命令写入文本框。
这是我的问题,当我运行项目时,插入 mysql 表的字段是:myReader["STableName"].ToString()
喜欢这张照片:
连接很好,这是我的代码:
string address;
string username;
string password;
string database;
address = textBox1.Text;
username = textBox2.Text;
password = textBox3.Text;
database = textBox4.Text;
//MySql
string mysqladdress;
string mysqlusername;
string mysqlpassword;
string mysqldatabase;
mysqladdress = textBox7.Text;
mysqlusername = textBox8.Text;
mysqlpassword = textBox9.Text;
mysqldatabase = textBox10.Text;
//SQLCode
string sqlcmnd1;
string sqlcmnd2;
sqlcmnd1 = textBox5.Text;
sqlcmnd2 = textBox6.Text;
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=" + address + ";" +
"Initial Catalog=" + database + ";" +
"User id=" + username + ";" +
"Password=" + password + ";";
try
{
conn.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand(sqlcmnd1, conn);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
string connectionString = @"server=" + mysqladdress + ";" + "username=" + mysqlusername + ";" + "password=" + mysqlpassword + ";" + "database=" + mysqldatabase + "";
MySqlConnection connection = null;
MySqlDataReader reader = null;
try
{
connection = new MySqlConnection(connectionString);
connection.Open();
string stm = sqlcmnd2;//here is my problem
MySqlDataAdapter dataAdapter = new MySqlDataAdapter();
dataAdapter.SelectCommand = new MySqlCommand(stm, connection);
DataTable table = new DataTable();
dataAdapter.Fill(table);
}
sqlcmnd2:
INSERT INTO test (CusCode,STableName,Date,ModdatZaman) VALUES ('" + myReader["CusCode"].ToString() + "','" + myReader["STableName"].ToString() + "','" + myReader["Date"].ToString() + "','" + myReader["ModdatZaman"].ToString() + "')
sqlcmnd1:
SELECT * FROM __TempUserCompRep__
【问题讨论】:
-
如果你不显示你填充的变量 sqlcmnd2 是不可能理解这里发生了什么。可能是字符串连接错误而不是使用参数的情况。
-
@Steve 谢谢你,我编辑了文章。请再检查一遍。
-
然后您将该字符串键入文本框中,希望“myReader”文字文本成为对 myReader 变量的引用?这不会发生
-
@Steve 它可以在不将 sql 命令放入文本框的情况下工作,我如何使用文本框做到这一点?
-
在文本框中写入 INSERT INTO test (CusCode,STableName,Date,ModdatZaman) VALUES (@cidcode,@table,@date) 在您的代码中创建三个参数以上名称并从 myReader 变量中设置它们的值。但是请记住,这种方法是灾难的根源。您的用户可以输入任何内容。甚至 DROP 数据库
并且您将没有更多的数据库可以使用